2017-02-02 4 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

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

の私はCLOB型のsubstr作品を考えていないため、エラーがあると思います。 substrを使用するには、VARCHAR2データ型に変換する必要があります。

+1

が正しい場合、substrはvarchar2です。 clobをsubstr化する場合は、DBMS_LOB.SUBSTR(列、値)を使用します。 –

関連する問題