@Raushka

Как из массива получить данные поля cli_codes pl/sql?

declare
cReq clob :='{
  "dep_id": "1234",
  "id": "789789",
  "cli_codes": ["11111111111","1121212122","454646646"]}'; --массив данных
    nLoanDep         number(10);
    nLoanId          number(10);
    sCliCodes        varchar2(500);  

begin
  select json_value(cReq,'$.dep_id' returning number(10)) as nLoanDep,
          json_value(cReq,'$.id' returning number(10)) as nLoanId,
          JSON_ARRAy(cReq,'$.cli_codes' returning varchar2(500)) as sCliCode
      into nLoanDep, nLoanId, sCliCodes
      from dual;
    dbms_output.put_line(nLoanDep); 
    dbms_output.put_line(nLoanId); 
      dbms_output.put_line(sCliCodes);
end;
Из массива смогли получить только данные полей dep_id, id, a с поля cli_codes так и не получилось вытащить данные "11111111111","1121212122","454646646".  Какой есть способ чтобы получить данные "11111111111","1121212122","454646646" с поля cli_codes, ведь функциями json_value, JSON_ARRAy не обойтись, можете пожалуйста подсказать?
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
Навскидку как-то так:

SELECT *
FROM JSON_TABLE(cReq, 
                '$' COLUMNS ( dep_id NUMBER(10) PATH '$.dep_id',
                              id NUMBER(10) PATH '$.id',
                              cli_codes varchar2(500) FORMAT JSON PATH '$.cli_codes'
                              )
                ) jsontable

JSON_TABLE() function
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы