2010-06-10 32 views
2

是否有人知道是否有可能返回一個關聯數組作爲Oracle函數的結果返回一個Oracle關聯數組,如果是的話你有什麼例子?從功能

我有一個包含下文所定義的關聯數組聲明的Oracle包:

TYPE EVENTPARAM IS TABLE OF NUMBER 
    INDEX BY BINARY_INTEGER; 

這然後在存儲過程中所使用的封裝外部如下:

v_CompParams areva_interface.eventparam; 

的意圖將變量v_CompParams中的字符串關聯數組存儲在另一個包中的Parse函數中返回。爲其定義如下:

PACKAGE STRING_MANIP 
IS 

    TYPE a_array IS TABLE OF NUMBER 
     INDEX BY BINARY_INTEGER; 

    FUNCTION Parse (v_string VARCHAR2, v_delim VARCHAR2) RETURN a_array; 
    FUNCTION RowCount(colln IN a_array) RETURN NUMBER; 

END; 

,將實現該是代碼:

v_CompParams := STRING_MANIP.PARSE(v_CompID,v_Delim); 

遺憾的是它不工作,我得到的錯誤「PLS-00382:表達式類型錯誤」。我愚蠢地認爲,由於a_array來自與變量v_CompParams相同的源Oracle類型,因此它們之間不會有任何問題。任何幫助非常感謝。

親切的問候

的Paul J.

+0

你有兩種類型,一種在areva_interface,一個在string_manip - 因此它們不是同一類型(即使它們具有相同的結構)。 – 2010-06-11 01:58:31

回答

6

是非常 「相同」 的類型,v_CompParams必須定義爲:

v_CompParams STRING_MANIP.a_array;