2017-02-02 12 views
0

Oracle 11g는 json을 지원하지 않기 때문에 CLOB을 사용하여 json 데이터를 생성하고 있습니다. 그러나 varchar2 (32767) 크기로 인해 ORA-06502 : PL/SQL : 숫자 또는 값 오류. 한편, 데이터 크기는 68075입니다. 왜 Clob이 4GB 데이터를 지원하더라도 오류가 발생합니까?ORA-06502 : PL/SQL : CLOB을 사용하는 동안 숫자 또는 값 오류가 발생했습니다.

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

은 내가 CLOB 타입에 substr 일을 생각하지 않기 때문에 htp.p(substr(jobject, 0, (length(jobject)-1)));

의 오류라고 생각합니다. substr을 사용하려면 VARCHAR2 데이터 유형으로 변환해야합니다.

+1

이 맞습니다. substr은 varchar2입니다. clob을 substr하려면 DBMS_LOB.SUBSTR (column, value)을 사용하십시오. –