【问题标题】:ORA-06502: PL/SQL: numeric or value error on CLOB variableORA-06502: PL/SQL: CLOB 变量上的数字或值错误
【发布时间】:2018-09-12 17:15:18
【问题描述】:

我有一个从表中检索 CLOB 值的 AJAX 回调。

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

为什么会这样?

【问题讨论】:

  • the HTP subprograms 都没有 CLOB 参数,因此您被限制为 varchar2 的最大大小;如果 CLOB 大于 32k,它将给出该错误。您必须决定如何处理 - 可能通过将值分成多行?
  • @AlexPoole 啊,这是有道理的。感谢您的提示。

标签: oracle plsql oracle-apex


【解决方案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 数据。你也可以用它做任何其他事情。

【讨论】:

    猜你喜欢
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2021-12-26
    相关资源
    最近更新 更多