Получение проблемы при использовании JSON_TABLE в oracle - PullRequest
1 голос
/ 21 февраля 2020

Я выполняю следующий запрос:

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 команда неправильно завершена

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, чтобы исправить эту проблему?

1 Ответ

0 голосов
/ 21 февраля 2020

Какую версию 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 или ниже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...