我在DB ORACLE上发送带附件的电子邮件。我形成了这个附件,但它非常慢
FOR x IN (select *
from l_sulkk
where PROJECT_ID = proj_id)
LOOP
v_clob :=
v_clob
|| x.CONTRACT_NUMBER
|| ';'
|| TO_CHAR(x.PERSON_ID)
|| ';'
|| x.BEHAV_MODEL
|| ';'
|| TO_CHAR(x.BEHAV_MODEL#DATE_CALC, 'dd.mm.yyyy hh24:mi:ss')
|| ';'
|| TO_CHAR(x.DATE_INSERT, 'dd.mm.yyyy hh24:mi:ss')
|| ';'
|| TO_CHAR(x.DONE_DATE, 'dd.mm.yyyy hh24:mi:ss')
|| ';'
|| x.ERROR_MSG
|| ';'
|| TO_CHAR(x.PHONES_ID)
|| ';'
|| x.PHONES_NUM
|| ';'
|| TO_CHAR(x.INFORMER_PK)
|| ';'
|| TO_CHAR(x.CLIENT_TIME_ZONE)
|| ';'
|| x.CITIES_KID_FACT*/
|| UTL_TCP.crlf;
END LOOP;
如何优化此过程有任何变体?
答案 0 :(得分:0)
您可以使用 VARCHAR2缓冲区获取最多32k的数据块,然后使用
dbms_lob.writeappend
组成CLOB。
此外,您可以在SQL本身中进行一些预连接(只是不要使用像UTL_TCP.crlf那样的pl / sql函数。
这是一般的想法。 您也可以check this post获得一些测试结果。