修改SELECT语句别名后无法实现CURSOR,报ORA-00904错误
问题原因与解决方案
错误原因
ORA-00904错误的核心是:主查询中定义的字段别名user_no仅在当前SELECT结果集的展示阶段生效,子查询(包括CURSOR内的查询)无法引用主查询的字段别名。你的子查询里写了Q.user_no,但主表another_table.maria_punter的实际字段是userid,数据库找不到这个别名对应的字段,所以报错。
修正后的SQL语句
SELECT userid as user_no, CURSOR(SELECT user_no FROM my_table.punter P WHERE P.user_no = Q.userid) FROM another_table.maria_punter Q;
关键说明
- 子查询关联主表时,必须使用主表的实际字段名(这里是
Q.userid),而非主查询里定义的别名。 - 主查询的别名
user_no只影响最终结果的列名,不改变字段在数据库中的实际标识,所以子查询无法识别这个别名。
内容的提问来源于stack exchange,提问作者Working dollar
相关产品推荐
相关产品推荐

