【发布时间】:2021-08-16 03:45:57
【问题描述】:
我正在尝试使用 JSON_OBJECT 生成一些 oracle 记录快照,但令人惊讶的是,我似乎无法在子句语句中使用变量?
CREATE TABLE SAMPLE(
person_id NUMBER,
first_name VARCHAR2(50) NOT NULL,
last_name VARCHAR2(50) NOT NULL,
PRIMARY KEY(person_id)
);
INSERT INTO SAMPLE (person_id, first_name, last_name)
VALUES (1, 'John', 'Doe');
INSERT INTO SAMPLE (person_id, first_name, last_name)
VALUES (2, 'Mary', 'Doe');
SET SERVEROUTPUT ON
DECLARE
name VARCHAR2(50) := 'John';
jsonResult CLOB;
BEGIN
SELECT JSON_OBJECT(*)
INTO jsonResult
FROM SAMPLE
WHERE first_name = name;
DBMS_OUTPUT.PUT_LINE( jsonResult );
END;
错误报告:
ORA-00904:“名称”:无效标识符
ORA-06512: 在第 5 行
【问题讨论】:
-
希望新的例子是你喜欢的
-
您使用的是什么数据库版本?
JSON_OBJECT(*)似乎是在 Oracle 19 中引入的,因此如果您使用的是 version prior to that,则必须列出每个键。 -
Oracle Database 19c 企业版版本 19.0.0.0.0 - 生产
-
这看起来是一个错误。如果您使用文本文字但不使用 PL/SQL 变量,则该查询有效。尝试
WHERE first_name = (SELECT name FROM DUAL);会出现内部错误。
标签: sql oracle plsql oracle19c