oracle ref() oracle-00904 无效的列名
Posted
技术标签:
【中文标题】oracle ref() oracle-00904 无效的列名【英文标题】:oracle ref() ora-00904 invalid column name 【发布时间】:2017-11-16 05:16:25 【问题描述】:显然那里有很多 ora-00904 错误,但我找不到与我的类似情况。
我的案例与oracle中的ref()
函数有关:https://docs.oracle.com/cloud/latest/db112/SQLRF/functions145.htm#SQLRF00694
根据上面链接中的例子,你可以像下面这样查询没有问题:
select ref(x) from some_table x
但我得到的是错误ora-00904 invalid column name
,它突出显示了ref(x)
中的x
我无法从查询中删除 ref()
函数,因为它是由 oracle 表单自动添加的。
有人有类似经历吗?有什么要设置的吗?
顺便说一句,我在 oracle 8i 之上使用了一个古老的 oracle 形式 6i
【问题讨论】:
尝试添加列别名select ref(x) MyColName from some_table x
@Used_By_Already 不幸的是,它没有任何效果并得到相同的结果
好吧,它是在“类型”的上下文中使用的,因此表 neds(我相信)包含一个“类型”列,只有这样 ref() 才相关。即它不仅仅是可以使用的任何表别名
@Used_By_Already 嗯嗯,好像找到线索了,谢谢,我去研究一下
@Used_By_Already 谢谢,正如你所暗示的那样,“表类型”对我来说是新的,所以我错过了链接中的详细信息。考虑发布答案,以便我接受。 ;)
【参考方案1】:
ref() 函数与用户定义的类型一起使用;因此函数使用的表别名需要引用用户定义类型的表。
【讨论】:
以上是关于oracle ref() oracle-00904 无效的列名的主要内容,如果未能解决你的问题,请参考以下文章
在存储过程中使用“out”ref_cursor 调用 Oracle 存储过程