ORA-06502:PL / SQL:CLOB变量上的数字或值错误

时间:2018-09-11 18:20:28

标签: oracle plsql oracle-apex

我有一个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

为什么会这样?

1 个答案:

答案 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数据。您还可以使用它进行其他所有操作。