ORA-06502: PL / SQL: числовая или значимая ошибка при использовании CLOB

Поскольку Oracle 11g не поддерживает json, как вы знаете, я создаю данные json с использованием CLOB из-за размера varchar2 (32767), но в этот раз я получаю ORA-06502: PL / SQL: числовую или значительную ошибку. Между тем, размер данных составляет 68075. Почему я получаю сообщение об ошибке, несмотря на то, что Clob поддерживает данные 4 ГБ?

procedure course
(
  p varchar2 default null
)
as

    cursor cr_course(cp_param varchar2)
    is
        select 
            m.code, 
            m.title 
        from t_course m
            where 
                and type = cp_param;

    jobject clob;
    jitem   varchar2(200);

begin

  dbms_lob.createtemporary(jobject, false);

  for n in cr_course(p) loop
      jitem := '{"key":"' || n.code || '", "value":"'|| n.title || '"},';
      dbms_lob.append(jobject, jitem);
  end loop;

  htp.p(substr(jobject, 0, (length(jobject)-1)));

exception when others then
  dbms_lob.freetemporary(jobject);
  htp.p(sqlerrm);

end;

person Goran Zooferic    schedule 02.02.2017    source источник


Ответы (1)


Я думаю, что ошибка связана с htp.p(substr(jobject, 0, (length(jobject)-1)));

Я не думаю, что substr работает с типом clob. Вам нужно будет преобразовать его в тип данных VARCHAR2, чтобы использовать на нем substr.

person A Nice Guy    schedule 02.02.2017
comment
правильно, substr для varchar2. Если вы хотите подставить clob, используйте DBMS_LOB.SUBSTR (столбец, значение). - person Renato Afonso; 02.02.2017