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 无效的列名的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 树上的逻辑

在 Oracle 数据库中传入 REF

带有光滑的 Oracle ref 游标

在存储过程中使用“out”ref_cursor 调用 Oracle 存储过程

如何在过程中使用返回 Oracle REF_CURSOR 的函数

使用 SqlAlchemy 执行返回 REF CURSOR 的 Oracle 存储过程