Tänk på att SQL-strängar inte kan vara större än 4000 byte, medan Pl/SQL kan ha strängar så stora som 32767 byte. se nedan för ett exempel på att infoga en stor sträng via ett anonymt block som jag tror kommer att göra allt du behöver göra.
observera att jag ändrade varchar2(32000) till CLOB
set serveroutput ON
CREATE TABLE testclob
(
id NUMBER,
c CLOB,
d VARCHAR2(4000)
);
DECLARE
reallybigtextstring CLOB := '123';
i INT;
BEGIN
WHILE Length(reallybigtextstring) <= 60000 LOOP
reallybigtextstring := reallybigtextstring
|| '000000000000000000000000000000000';
END LOOP;
INSERT INTO testclob
(id,
c,
d)
VALUES (0,
reallybigtextstring,
'done');
dbms_output.Put_line('I have finished inputting your clob: '
|| Length(reallybigtextstring));
END;
/
SELECT *
FROM testclob;
"I have finished inputting your clob: 60030"