Bagaimana cara membuat clob yang sangat panjang di pl sql tanpa kesalahan

Hai, saya membuat fungsi plsql baru dengan deklarasi ini:

string_result CLOB;
string1 CLOB;
string2 CLOB;

Di tubuh saya, saya memiliki:

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

Ketika saya menjalankan fungsi ini saya menerima:

01489. 00000 - "hasil penggabungan string terlalu panjang"

Penyebab: Hasil penggabungan string lebih dari ukuran maksimum.

Tindakan: Pastikan hasilnya kurang dari ukuran maksimum.


person Michele M    schedule 05.07.2017    source sumber
comment
Mengapa tidak menulis clobs dalam file teks dan mengirimkan file teks tersebut sebagai lampiran?   -  person Sudipta Mondal    schedule 05.07.2017


Jawaban (1)


Anda dapat menggunakan DBMS_LOB.CREATETEMPORARY dan DBMS_LOB.WRITEAPPEND.

Sesuatu seperti:

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