【发布时间】:2021-12-11 05:29:20
【问题描述】:
我正在尝试从关联数组中查找值以更新表,但出现错误。这是演示该问题的最低限度代码(我的实际查询要复杂得多)。
我是否遗漏了什么,或者如果这是 Oracle 限制,是否有办法解决?
CREATE TABLE t_employee AS SELECT cast('john' as varchar2(30)) emp_name, CAST (NULL AS NUMBER (5)) emp_id FROM DUAL;
DECLARE
TYPE emp_typ IS TABLE OF NUMBER INDEX BY VARCHAR2(30);
emp_lookup emp_typ;
BEGIN
emp_lookup ('john') := 1234;
UPDATE t_employee e
SET emp_id = (SELECT emp_lookup (e.emp_name) FROM DUAL);
END;
/
--DROP TABLE t_employee;
> PLS-00201:必须声明标识符“E.EMP_NAME”
当我将更新更改为更简单的构造时:
UPDATE t_employee SET emp_id = emp_lookup (t_employee.emp_name);
我觉得奇怪:PLS-00382:表达式类型错误
与 SELECT 相同。在我看来,我们不能直接在 SQL 语句中使用关联数组。
【问题讨论】:
标签: oracle sql-update associative-array