有沒有辦法將clob作為文本(或檔案)回傳而不先分成更小的部分?
我嘗試創建一個GET帶有PL/SQL源代碼的處理程式,它可以做到這一點:
declare
txt clob;
begin
...-- set clob
htp.p(txt);
end;
但后來我收到了錯誤ORA-06502: PL/SQL: numeric or value error。
然后我嘗試將 Clob 切割成更小的部分并htp.p多次呼叫,這奏效了,但我想知道是否有辦法一次性發送整個內容。
uj5u.com熱心網友回復:
該檔案指出,htp.p并且htp.prn僅采用 VARCHAR2,因此您受到 varchar2 的最大大小的限制,如果 clob 長度超過該長度,則會引發錯誤。這是你可以做的:
以 4k 塊回圈遍歷 clob 并使用htp.prn. 避免htp.p在回圈中使用,因為這會生成一個可能會弄亂輸出的換行符,例如,如果您正在生成 json。通過設定 mime 標頭讓瀏覽器知道他得到了什么也是一種很好的做法。
DECLARE
l_clob CLOB;
l_amt INTEGER := 4000;
l_pos INTEGER := 1;
l_buf VARCHAR2(4000);
BEGIN
owa_util.mime_header ('text/html', true);
l_clob := '....';
LOOP
BEGIN
dbms_lob.read(
l_clob,
l_amt,
l_pos,
l_buf
);
l_pos := l_pos l_amt;
-- need htp.prn since htp.p generates a newline char at the end.
htp.prn(l_buf);
EXCEPTION
WHEN no_data_found THEN
EXIT;
END;
END LOOP;
END;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/340646.html
