JSON_ARRAYAGG 返回截断的数据列表

问题描述 投票:0回答:1

我正在尝试创建 JSON 输出,但它显示被截断。

表创建和插入:

create table test(c1 number, c2 varchar2(10), c3 varchar2(100));

begin
  for i in 1 .. 1000 loop
    insert into test values (i, 'val_' || i, 'descption of ' || i);
  end loop;
end;

我执行的 SQL 查询:

SELECT JSON_ARRAYAGG(
           distinct JSON_OBJECT(
                   'id' VALUE c1,
                   'value' VALUE c2,
                   'description'  VALUE c3) RETURNING CLOB)
  FROM test;

这是输出:

[{"id":1,"value":"val_1","描述":"描述 1 英寸

我使用的是 Oracle 12.2.0.1.0 数据库版本和 SQL Developer 版本 23.1.1.339,Build 339.1213

谁能帮我理解我应该怎么做才能获得所有行?

谢谢你,

json oracle json-arrayagg
1个回答
0
投票

你可以尝试像下面这样测试。

create table TEST_TABLE(c1 number, c2 varchar2(10), c3 varchar2(100));
begin
  for i in 1 .. 1000 loop
    insert into TEST_TABLE values (i, 'val_' || i, 'descption of ' || i);
  end loop;
end;
/
Commit;
SELECT id, value, description
FROM json_table(  ( SELECT J_ARR
                    FROM (Select J_ARR
                          From  ( SELECT JSON_ARRAYAGG(
                                         distinct
                                         JSON_OBJECT(
                                           'id'          VALUE c1,
                                           'value'       VALUE c2,
                                           'description' VALUE c3
                                         )
                                         RETURNING CLOB
                                      ) "J_ARR"
                                  FROM  TEST_TABLE
                                ) 
                         )
                    ) , '$[*]'
                    COLUMNS ( id NUMBER PATH '$.id',
                              value VARCHAR PATH '$.value',
                              description VARCHAR PATH '$.description'
                            )
               ) 
/*    R e s u l t :
ID   VALUE    DESCRIPTION
---- -------- -------------
   1 val_1    descption of 1
   2 val_2    descption of 2
   3 val_3    descption of 3
... ... ...
 999 val_999    descption of 999
1000 val_1000   descption of 1000  */
© www.soinside.com 2019 - 2024. All rights reserved.