在 PL/SQL 中出现错误“PLS-00201:必须声明标识符‘JSON_VALUE’”
Posted
技术标签:
【中文标题】在 PL/SQL 中出现错误“PLS-00201:必须声明标识符‘JSON_VALUE’”【英文标题】:Getting Error "PLS-00201: identifier 'JSON_VALUE' must be declared" in PL/SQL 【发布时间】:2019-07-02 09:41:39 【问题描述】:我正在尝试从存储在表中的 Json 文件中提取数据。但我无法在 PL/SQL 中执行包 JSON_VALUE。
以下查询工作正常:
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: identifier 'JSON_VALUE' must be declared 错误。
【问题讨论】:
您的数据库版本是 12c 吗?谢谢@a_horse_with_no_name。适用于 12.2 但不适用于 12.1。如果您的版本是 12.1,请考虑在 Tejash 的答案中的查询中使用。 在 12.2 和 DbFiddle 上为我工作:dbfiddle.uk/… 谢谢@BarbarosÖzhan 我的数据库版本是 12.1 【参考方案1】:试试这个
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;
/
它对我有用。
对于 DB 版本 12.1
,PL/SQL 赋值 SQL_QUERY_RES := JSON_VALUE('a:100', '$.a' );
不起作用,您需要在 select 语句中使用,但对于 12.2
有效。
【讨论】:
以上是关于在 PL/SQL 中出现错误“PLS-00201:必须声明标识符‘JSON_VALUE’”的主要内容,如果未能解决你的问题,请参考以下文章
PL/SQL 函数中的 XmlRoot、XmlElement、InsertChildXml 给出 PLS-00201 必须声明标识符
ORA-06550:第 1 行,第 7 列:PLS-00201:必须声明标识符“PAYMENT_UPDATE” ORA-06550:第 1 行,第 7 列:PL/SQL:语句被忽略