我有一个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
为什么会这样?
如果您使用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数据。你也可以用它来做其他事情。