我有以下Oracle PL/SQL隐式光标循环:
FOR c IN
(
SELECT 1 AS "mycol",column2 FROM DUAL
UNION ALL
SELECT 2 AS "mycol",column2 FROM DUAL
)
LOOP
DBMS_OUTPUT.PUT_LINE(c.mycol);
END LOOP;
当我运行时,我会收到错误消息
pls-00302;必须声明组件" mycol"。
如何在隐式光标循环中明确插入此列" mycol"?
"我如何在隐式光标循环中明确插入此列'mycol'?"
不是mycol
它是"mycol"
。您将其标记为双引号,这使其对病例敏感。因此,要么更改您的参考...
DBMS_OUTPUT.PUT_LINE(c."mycol");
...或者,更改列别名:
SELECT 1 AS mycol, column2 FROM DUAL
双引号标识符是棘手的:如果我们在命名对象时使用它们,则必须小心地使用双引号,然后使用完全相同的情况。除了标识符全部在上层案例时,一个除外。然后双引号是可选的。"MYCOL"
和MYCOL
是等效的,就像mycol
一样。
最好的事情是避免使用双引号,除非您有迫切的理由这样做。