2016-07-29 65 views
0

我想要做的是,在一個函數中填充一個表(用戶定義類型),然後做一個選擇該表。檢索內容用戶定義表

我做了如下:

1 /定義自定義類型:

create or replace TYPE "MVT_CD" AS OBJECT 
( 
    ACCOUNTPK NUMBER(19,0), 
    ACCOUNTCODE VARCHAR2(255) 
) 

2 /定義該類型的表

create or replace TYPE "MVT_TAB_CD" AS TABLE OF MVT_CD 

3 /述說我的功能該

create or replace FUNCTION OUTPUT_CD (BUS_DAY VARCHAR2, CODE_AGENCE VARCHAR2) RETURN CD_OUTPUT_TABLE AS 
    RETVAL CD_OUTPUT_TABLE := CD_OUTPUT_TABLE(); 
    ...  
    MVT_TAB MVT_TAB_CD := MVT_TAB_CD(); 
    ... 

BEGIN 

    MVT_TAB.EXTEND; 
    MVT_TAB(MVT_TAB.COUNT) := MVT_CD(123, ' '); 

    MVT_TAB.EXTEND; 
    MVT_TAB(MVT_TAB.COUNT) := MVT_CD(456, ' '); 

    FOR I IN (
      SELECT ACCOUNTPK, ACCOUNTCODE FROM MVT_TAB 
    )LOOP 
    RETVAL.EXTEND; 
    RETVAL(RETVAL.COUNT) := I.ACCOUNTPK|| I.ACCOUNTCODE; 
    END LOOP; 
    ... 
END 

Variab我使用的名爲:MVT_TAB,我想做一個select來檢索它的containt,並在我的函數的另一部分中使用後者。

當我嘗試Comile我有:ORA-000942在該行:

SELECT ACCOUNTPK, ACCOUNTCODE FROM MVT_TAB 

我想過使用BULK COLLECT但我不知道如果我在好辦法。

回答

0

您只需投你的結構爲表:

SELECT ACCOUNTPK, ACCOUNTCODE FROM table(MVT_TAB) 
+0

那就是錯過了招!謝謝 –