Вы можете попытаться построить строку с анонимным блоком PL / SQL.
Это просто пример, который вам нужно адаптировать:
SQL> set serveroutput on
SQL>
SQL> desc lob_table;
Name Null? Type
----------------------------------------- -------- ----------------------------
KEY_VALUE NUMBER
C_COL CLOB
SQL>
SQL> declare
2 v varchar2(10000);
3 begin
4 v:='try1' || rpad (' ', 9000, ' ') || 'try2';
5 dbms_output.put_line('length(v) = ' || length(v));
6 update lob_table set c_col = v where key_value=12;
7 end;
8 /
length(v) = 9008
PL/SQL procedure successfully completed.
SQL> show errors
No errors.
Если приведенный выше код работает не работает в Oracle 9, вы можете попробовать использовать DBMS_LOB.
Пример:
SQL> --
SQL> set serveroutput on
SQL> --
SQL> DECLARE
2 value VARCHAR2(10000);
3 amount binary_integer;
4 lob_loc CLOB;
5 BEGIN
6 value :='try1' || rpad (' ', 9000, ' ') || 'try2';
7 dbms_output.put_line('length(v) = ' || length(value));
8 SELECT c_col INTO lob_loc
9 FROM lob_table
10 WHERE key_value = 12 FOR UPDATE;
11 amount := length(value);
12 dbms_lob.write (lob_loc, amount, 1, value);
13 COMMIT;
14 END;
15 /
length(v) = 9008
PL/SQL procedure successfully completed.
SQL> show errors
No errors.
SQL>