Table-Variablen in Oracle gespeicherten Prozedur
Ich bin neu in Oracle und ich müssen übersetzen meine gespeicherten Prozedur von SQL Server auf oracle. In SQL Server, ich habe die Funktion gibt eine table-variable.
Ausführung sieht wie folgt aus:
Declare @tblTSVal table(stValue varchar(500), itemKey varchar(255), props varchar(max))
insert @tblTSVal(stValue, itemKey, props)
select * from dbo.fn_ag_valuesToTable(@tsVal)
Schreibe ich diese Funktion in meiner Oracle-Datenbank und es funktioniert. Aber ich weiß nicht, wie zu erklären, eine table-variable in der gespeicherten Prozedur.
Jetzt versuche ich so:
Erklärung:
type AGValues as object
(
stValue varchar(255),
itemKey varchar(255),
props varchar(8000)
);
type ValTBL is Table of AGValues;
Ausführung:
insert into tblTSVal(stValue, itemKey, props)
select * from TABLE(dbMis.fn_ag_valuesToTable(tsVal));
Dass die Ursachen der Fehler:
Tabelle oder view nicht vorhanden.
Geben Sie mir einige Ratschläge bitte.
- Ist
dbMis.fn_ag_valuesToTable
eine Funktion zurückgibt, die einValTBL
? IsttblTSVal
eine lokale variable vom TypValTBL
? IsttsVal
eine lokale variable, die Sie übergeben, um Ihre Funktion?
Du musst angemeldet sein, um einen Kommentar abzugeben.
ValTBL so genannte geschachtelte Tabelle. Zum laden von Daten verwenden Sie bitte BULK COLLECT-option.
Beispiel:
Aber das ist nicht die Wurzel der "Tabelle oder view nicht vorhanden." - Fehler problem. Bitte überprüfen Sie Ihre Rechte zur Ausführung
dbMis.fn_ag_valuesToTable
Funktion.Verwenden pl/sql-Funktion als eine Tabelle lohnt sich zu Lesen über die fließbandverarbeitung und parallelen Funktionen Tabelle.
http://docs.oracle.com/cd/E11882_01/appdev.112/e10765/pipe_paral_tbl.htm#ADDCI2140
Habe ich noch nicht ausprobiert, aber da bist du nicht die Rückgabe der Abfrageergebnisse direkt als output (ie, die Sie ausführen, einem Befehl), was, wenn Sie wickelte es in ein PL/SQL-block?
Gehe ich davon aus dbMis.fn_ag_valuesToTable ist eine Funktion.