วิธีเชื่อมต่อ 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