DECLARE
t VARCHAR2(700);
v VARCHAR2(700);
d VARCHAR2(700);
c CLOB;
BEGIN
INSERT INTO utf8_4char_nodata (title) VALUES (utl_raw.cast_to_varchar2('f0a1918d'));
COMMIT;
SELECT title, DUMP(title,16)
INTO t, d
FROM utf8_4char_nodata;
dbms_output.put_line('');
dbms_output.put_line(d);
dbms_lob.createtemporary(c, TRUE);
FOR i IN 1..LENGTH(t)
LOOP
BEGIN
v := SUBSTR(t, i, 1);
dbms_output.put_line(v);
dbms_output.put_line('LENGTH() '||LENGTH(v)||' LENGTHB() '||LENGTHB(v)||' - '||TO_CHAR(ASCII(v), 'xxxxxxxxxx'));
dbms_lob.trim(c, 0);
dbms_lob.writeappend(c, length(v), v);
v := dbms_lob.substr(c);
dbms_output.put_line('LOB LENGTH() '||dbms_lob.getlength(c)||' - "'||v||'; '||TO_CHAR(ASCII(v), 'xxxxxxxxxx')||'"');
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(dbms_utility.format_error_stack);
END;
END LOOP;
END;
Statement processed.
Typ=1 Len=4: f0,a1,91,8d
𡑍
ORA-22921: length of input buffer is smaller than amount requested
ORA-06512: at "SYS.DBMS_LOB", line 1163