ORA-00907 使用 sql 调用函数时
Posted
技术标签:
【中文标题】ORA-00907 使用 sql 调用函数时【英文标题】:ORA-00907 when using sql to call a function 【发布时间】:2015-12-22 17:18:40 【问题描述】:尝试从返回自定义类型的函数中进行选择,该类型是表格
我认为这会起作用
select * from table(FW.CustomFunction ('value1','value2'))
返回一个
ora-000902: 无效的数据类型
好的,所以我认为这会起作用:
select * from table(cast FW.CustomFunction ('value1','value2') AS CustomTypes.CustomTable )
但我明白了
ORA-00907: 缺少右括号
任何线索我错过了什么? 架构定义如下:
CREATE OR REPLACE PACKAGE FW.CustomTypes IS
TYPE CustomTable IS TABLE OF VARCHAR2(255 CHAR)
INDEX BY BINARY_INTEGER;
END CustomTypes;
/
CREATE OR REPLACE FUNCTION FW.CustomFunction ( param1 IN VARCHAR2, param2 IN VARCHAR2 ) RETURN CustomTypes.CustomTable IS
CustomTableToReturn CustomTypes.CustomTable;
BEGIN
LOOP
...add items to CustomTableToReturn
END LOOP;
RETURN CustomTableToReturn;
END;
/
【问题讨论】:
不确定oracle,但在sql-sever中这是select * from yourTableValuedFunction () where somefield = 'value1' etc
【参考方案1】:
要转换的参数需要用括号括起来:
table(cast ( FW.CustomFunction ('value1','value2') AS CustomTypes.CustomTable ) )
【讨论】:
啊..我错过了添加它,但我确实尝试了这个。它返回 ORA-00902: invalid datatype....格式如下: select * from table(cast ( FW.CustomFunction ('value1','value2') AS CustomTypes.CustomTable )) 在我看来这是一个应该可以工作的。以上是关于ORA-00907 使用 sql 调用函数时的主要内容,如果未能解决你的问题,请参考以下文章
exeption ORA-00907: missing right parenthesis
SQL 错误:ORA-00907:缺少右括号 00907。00000 -“缺少右括号”