如何在隐式光标循环中引用别名列



我有以下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一样。

最好的事情是避免使用双引号,除非您有迫切的理由这样做。

最新更新