在oracle中使用JSON_TABLE时出现问题

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

我正在执行以下查询:

tbl_clob consist data  [{"ID":2,"FINACIAL_YEAR":"2020"}]. 
WITH JSON AS
(
    SELECT DATA 
    FROM tbl_clob  
    WHERE ldap_id = 'S'
    AND ROLE_ID = 3
    AND ROWNUM =1
)
SELECT ADJUSTMENT_ID,FINACIAL_YEAR
FROM JSON_TABLE
(
(SELECT DATA FROM JSON),'$[*]'
COLUMNS(
            ID     NUMBER     PATH '$.ID',
            FINACIAL_YEAR     VARCHAR2(50)      PATH '$.FINACIAL_YEAR'
)) jt; 

给我错误

ORA-00933:SQL命令未正确结束

  1. 00000-“ SQL命令未正确结束”

*原因:

*动作:

错误在行:11列:1

我也尝试了一些在线示例

WITH json AS
    (SELECT '[{
        "id"     : "101",
        "name"   : "Peter Parker",
        "skills" : "web spinning, wall scaling"
             }]' data
    FROM DUAL)
  SELECT id
        , name
        , skills
  FROM json, JSON_TABLE(json.data, '$[*]'
      COLUMNS (
        id       NUMBER       PATH '$.id'
      , name     VARCHAR2(20) PATH '$.name'
      , skills   VARCHAR2(30) PATH '$.skills'
      ));

它给了我同样的错误。我需要在Oracle中安装某些软件来解决此问题吗?

json oracle syntax oracle-sqldeveloper oracledb
1个回答
0
投票

您正在使用哪个版本的ORACLE-DB?

第一个语句将进行一些小的更改:

WITH d_JSON AS
(
    SELECT '[{"ID":2,"FINACIAL_YEAR":"2020"}]'  my_DATA  
    from dual
)
SELECT ADJUSTMENT_ID,FINACIAL_YEAR
FROM d_JSON,JSON_TABLE
(my_DATA,'$[*]'
COLUMNS(
            ADJUSTMENT_ID     NUMBER     PATH '$.ID',
            FINACIAL_YEAR     VARCHAR2(50)      PATH '$.FINACIAL_YEAR'
)) jt; 

第二个正在开箱即用。因此,看来您使用的是11.X或更低版本。

© www.soinside.com 2019 - 2024. All rights reserved.