ORA-06502:PL / SQL:使用CLOB时出现数值或值错误

时间:2017-02-02 09:48:11

标签: json plsql clob varchar2 oas

对于Oracle 11g不支持json,因为我知道,由于varchar2(32767)大小,我正在使用CLOB创建json数据,但此时我得到的是ORA-06502:PL / SQL:数字或值错误。同时,数据大小为68075.尽管Clob支持4 GB数据,为什么我会收到错误?

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;

1 个答案:

答案 0 :(得分:1)

我认为错误是因为htp.p(substr(jobject, 0, (length(jobject)-1)));

我不认为substr适用于clob类型。您必须将其转换为VARCHAR2数据类型才能使用substr