在 Oracle 19c 中将大 json 返回到 clob 时出现 ORA-40478

Gox*_*oxy 7 oracle json clob

在 Oracle 19c 中,我创建了表:

create table SAMPLE_TABLE (
id NUMBER not null,
display_name  NVARCHAR2(4000), )
Run Code Online (Sandbox Code Playgroud)

当我运行脚本时:

declare    
   i integer;   
   p_tmp_clob clob;
 begin   
   select JSON_ARRAYAGG(JSON_OBJECT(t.* )) into p_tmp_clob from SAMPLE_TABLE t;
end; 
Run Code Online (Sandbox Code Playgroud)

我收到以下 ORA-40478 异常。ORA-40478: 输出值太大(最大值:4000)

a_h*_*ame 10

您需要告诉函数返回一个 CLOB,而不是一个 varchar :

JSON_ARRAYAGG 也可能有必要(或者可能只有那里 - 我现在无法测试)

declare    
   i integer;   
   p_tmp_clob clob;
 begin   
   select JSON_ARRAYAGG(JSON_OBJECT(t.* RETURNING CLOB) RETURNING CLOB) 
     into p_tmp_clob 
   from SAMPLE_TABLE t;
end; 
Run Code Online (Sandbox Code Playgroud)