Was ich tun möchte, ist, in einer Funktion befülle ich eine Tabelle (mit einem benutzerdefinierten Typ) und dann eine Auswahl dieser Tabelle.Inhalt abrufen o benutzerdefinierte Tabelle
Ich tat, wie folgt:
1/definieren die benutzerdefinierte Typ:
create or replace TYPE "MVT_CD" AS OBJECT
(
ACCOUNTPK NUMBER(19,0),
ACCOUNTCODE VARCHAR2(255)
)
2/Definieren Sie eine Tabelle dieser Art
create or replace TYPE "MVT_TAB_CD" AS TABLE OF MVT_CD
3/My Funkt Deklarieren
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
Die Variab le, dass ich verwendet habe, heißt: MVT_TAB, und ich möchte eine Auswahl treffen, um sein containt abzurufen und das Letztere in einem anderen Teil meiner Funktion zu verwenden.
Wenn ich versuche mich zu Comile hatte: ORA-000942 an der Linie:
SELECT ACCOUNTPK, ACCOUNTCODE FROM MVT_TAB
Ich dachte über BULK COLLECT
verwenden, aber ich weiß nicht, ob ich in dem guten Weg bin.
Das ist der vermisste Trick ist !! Danke –