我有一个AJAX回调函数,可从表中检索CLOB值。
DECLARE
L_CLOB CLOB;
BEGIN
SELECT LOG
INTO L_CLOB
FROM TAB1
WHERE COL1 = apex_application.g_x01;
htp.p(L_CLOB);
END;
但是,当CLOB太大时,它将返回
ORA-06502: PL/SQL: numeric or value error
为什么会这样?
答案 0 :(得分:1)
如果使用 APEX_JSON 程序包,则可以返回CLOBS。 htp.p 软件包不支持CLOB输出,如果要使用该软件包,则必须将CLOB拆分为较小的VARCHAR2块。
使用 APEX_JSON 包要方便得多,您只需将 CLOB 作为参数传递给写入过程即可:
apex_json.open_object;
apex_json.write('mydata', MY_CLOB);
apex_json.close_object;
如果将其放入页面的 AJAX回调过程中,然后使用此Javascript进行调用:
apex.server.process(
'MY_AJAX_PROCEDURE', // Process or AJAX Callback name
{}, //No Parameters
{
success: function (pData) {
console.log(pData); //The Data will be logged into the console
}
}
);
您将在控制台中看到CLOB数据。您还可以使用它进行其他所有操作。