2015-12-22 53 views
0

試圖從函數返回一個自定義的類型,是一個表ORA-00907使用SQL調用函數

我想這會工作選擇時

select * from table(FW.CustomFunction ('value1','value2')) 

它返回一個

ORA-000902:無效的數據類型

行,所以我想到竟被這d工作:

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; 
/
+0

不知道有關甲骨文公司的,但是在SQL-服務器是這樣的方式'SELECT * FROM yourTableValuedFunction(),其中somefield = 'value1'etc' –

回答

2

參數投要求他們周圍的括號:

table(cast (FW.CustomFunction ('value1','value2') AS CustomTypes.CustomTable)) 
+0

啊..我錯過了添加它,但我確實嘗試過。它返回一個ORA-00902:無效的數據類型....這裏是格式:select * from table(cast(FW.CustomFunction('value1','value2')AS CustomTypes.CustomTable))在我看來,這是一個應該工作。 – gilstrac