Как объединить очень длинный clob в pl sql без ошибок

Привет, я делаю новую функцию plsql с этим объявлением:

string_result CLOB;
string1 CLOB;
string2 CLOB;

В моем теле есть:

...
for i in variable
loop
 string_result := string_result || string1 || string2 ;
end loop
...
--send string_result in mail
...
return 1

Когда я выполняю эту функцию, я получил:

01489. 00000 - "результат объединения строк слишком длинный"

Причина: результат объединения строк превышает максимальный размер.

Действие: убедитесь, что результат меньше максимального размера.


person Michele M    schedule 05.07.2017    source источник
comment
Почему бы не написать clobs в текстовом файле и не отправить этот текстовый файл в виде вложения?   -  person Sudipta Mondal    schedule 05.07.2017


Ответы (1)


Вы можете использовать DBMS_LOB.CREATETEMPORARY и DBMS_LOB.WRITEAPPEND.

Что-то типа:

DECLARE
  string_result CLOB;
BEGIN
  DBMS_LOB.CREATETEMPORARY( string_result, TRUE );
  FOR i IN variable LOOP
    DBMS_LOB.WRITEAPPEND( string_result, LENGTH( string1 ), string1 );
    DBMS_LOB.WRITEAPPEND( string_result, LENGTH( string2 ), string2 );
  END LOOP;
  --send string_result in mail
END;
person MT0    schedule 05.07.2017