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

问题描述 投票:2回答:1

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

为什么会这样?

oracle plsql oracle-apex
1个回答
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数据。你也可以用它来做其他事情。

© www.soinside.com 2019 - 2024. All rights reserved.