Получение ошибки «PLS-00201: идентификатор« JSON_VALUE »должен быть объявлен» в PL / SQL - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь извлечь данные из файла Json, хранящегося в таблице.Но я не могу выполнить пакет JSON_VALUE внутри PL / SQL.

Ниже приведенный запрос работает нормально:

SELECT JSON_VALUE('{a:100}', '$.a' ) AS value
  FROM DUAL;

Но нижеприведенный блок PL / SQL не работает:

declare 
  SQL_QUERY_RES varchar2(300);
  cursor c1 is
  SELECT 1 from DUAL;
begin
   for i in c1 
   loop
     SQL_QUERY_RES :=  JSON_VALUE('{a:100}', '$.a' );
     DBMS_OUTPUT.PUT_LINE ( SQL_QUERY_RES );    
   end loop;
   COMMIT;
end;
/

Дает PLS-00201: идентификатор 'JSON_VALUE' должен быть объявлен Ошибка.

1 Ответ

4 голосов
/ 02 июля 2019

Попробуйте это

DECLARE
    SQL_QUERY_RES   VARCHAR2(300);
    CURSOR C1 IS
    SELECT
        1
    FROM
        DUAL;

BEGIN
    FOR I IN C1 LOOP
        -- USE THIS
        SELECT
            JSON_VALUE('{a:100}', '$.a')
        INTO SQL_QUERY_RES
        FROM
            DUAL;

        DBMS_OUTPUT.PUT_LINE(SQL_QUERY_RES);
    END LOOP;

    COMMIT;
END;
/

Это работает для меня.

Для версии БД 12.1, PL / SQL-присваивание SQL_QUERY_RES := JSON_VALUE('{a:100}', '$.a' ); не работает, вы должны использовать в операторе select, но для 12.2 работает.

...