【问题标题】:ORA-06502: PL/SQL: numeric or value error while using CLOBORA-06502: PL/SQL: 使用 CLOB 时出现数字或值错误
【发布时间】:2017-02-02 18:38:54
【问题描述】:

如您所知,对于 Oracle 11g 不支持 json,由于 varchar2 (32767) 大小,我正在使用 CLOB 创建 json 数据,但此时我收到 ORA-06502: PL/SQL: numeric or value error。同时,数据大小为 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;

【问题讨论】:

    标签: json plsql clob varchar2 oas


    【解决方案1】:

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

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

    【讨论】:

    • 是对的,substr 用于 varchar2。如果要对 clob 进行 substr,请使用 DBMS_LOB.SUBSTR(column, value)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2021-12-26
    相关资源
    最近更新 更多