简体   繁体   中英

Getting issue while using JSON_TABLE in oracle

I am executing following query:

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; 

It gives me error

ORA-00933: SQL command not properly ended

  1. 00000 - "SQL command not properly ended"

*Cause:

*Action:

Error at Line: 11 Column: 1

I also tried some of the online examples

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'
      ));

It gives me same error. Is there something do I need to install in Oracle to fix this issue?

What version of ORACLE-DB are you using?

The first statement will work with small changes:

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; 

Second is working out of the box. So it seems you use 11.X or below.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM