2011-01-06 69 views
0

我想在數據庫儀表板報告軟件(Logi Info)中創建圖表。我有一個PL SQL包,返回一個具有多個值的引用遊標,但它似乎Logi信息不支持這一點,並給我一個錯誤ORA-00904: "DASHBOARD_PACKAGE"."GETSUMMARYDATA": invalid identifier。我認爲它或者不被支持,或者說我的錯誤是錯誤的。這是我的查詢:不支持返回的遊標光標

選擇dashboard_package.getSummaryData(1,SYSDATE)從雙

那是如何調用返回多個值的函數嗎?如果是這樣,是否有解決這個問題(返回類型不支持)?

+2

你能發佈「DASHBOARD_PACKAGE」包規格嗎?「GETSUMMARYDATA」? – Harrison 2011-01-06 13:53:12

回答

0

如果您使用SQL * Plus,則需要使用特殊語法才能訪問REF CURSORS。
http://download.oracle.com/docs/cd/B19306_01/server.102/b14357/ch5.htm#sthref1127

因此,這將是這樣的,你的情況:

這在SQL * Plus的手冊是很好的解釋

 
VARIABLE cv REFCURSOR 
EXECUTE dashboard_package.getSummaryData(1, sysdate, :cv) 
print cv 

注意,:cv變量的位置取決於你的程序的定義。
但是當你沒有表現出我們的源代碼

編輯
覆蓋所有possibilies(如由APC提及): 如果函數確實返回REF遊標,那麼語法稍有不同的,因爲在手動的下一章說明:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14357/ch5.htm#sthref1128

 
VARIABLE cv REFCURSOR 
execute :cv := dashboard_package.getSummaryData(1, sysdate); 
print cv 
+0

OP表示他們已經定義了一個返回引用遊標的函數,並且他們的發佈的SQL調用似乎證實了這一點。 SQL * Plus支持SELECT語句中的引用遊標,而不需要變量 - 至少在更新的版本中。看到我對他們的其他問題的迴應:http://stackoverflow.com/questions/4614475/how-to-call-a-function-in-a-package/4615302#4615302 – APC 2011-01-06 14:16:49

0

這是編譯錯誤。你的GETSUMMARYDATA()函數引用了一個無效的對象名,表,列或其他東西。如果你使用動態SQL,你將不會在運行時得到這個編譯錯誤。

所以,你需要通過你的函數的源代碼,並找到錯誤的東西。隨錯誤消息一起提供的行號在這裏可以幫到你。