Обновить большой текст в столбце CLOB в Oracle 9 - PullRequest
0 голосов
/ 16 июня 2020

Я бы обновил этот текст

try1
try2
try3
try4

Как мне установить синтаксис для обновления в oracle 9?

update table set field =  'try1
try2
try3
try4'
where id = 1

без переноса текста? У меня действительно очень большой текст после обновления.

1 Ответ

1 голос
/ 16 июня 2020

Вы можете попытаться построить строку с анонимным блоком 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> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...