ORA-06502: PL / SQL: ошибка с числовым значением или значением в переменной CLOB - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть обратный вызов 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 голосов
/ 12 сентября 2018

Если вы используете пакет 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 Callback Процедура на странице, а затем используйте этот 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 в консоли.С ним вы также можете делать все остальное.

...