Oracle: Rückgabe mehrerer Werte in einer Funktion
Ich versuche zurückgeben mehrerer Werte in eine %rowtype, der aus einer Funktion mit zwei Tabellen(Mitarbeiter und Abteilungen), aber es funktioniert nicht für mich.
create or replace function get_employee
(loc in number)
return mv_emp%rowtype
as
emp_record mv_emp%rowtype;
begin
select a.first_name, a.last_name, b.department_name into emp_record
from employees a, departments b
where a.department_id=b.department_id and location_id=loc;
return(emp_record);
end;
InformationsquelleAutor Jamil Smith | 2012-05-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Oben Funktion kompiliert ohne Fehler? Was ist der Typ von
MV_EMP
? Idealerweise sollte es etwas sein wie unten.Hatte ich auch, dies zu schreiben, syntax (11g):
SELECT x.some_field, y.something_else INTO myobject.field1, myobject.field2 FROM ...
Ich hatte initialisieren Sie das Objekt zunächst auch, wie diese:
myobject mytype := mytype('', '');
Danke @andersand. Ich Tat dies, 10g und erfolgreich war.
InformationsquelleAutor Guru
Werden wir nun eine Funktion, die Spalten der input-string.
Sobald die Funktion in Ort, können wir die Verwendung der table-Klausel der sql-Anweisung das gewünschte Ergebnis zu erhalten. Wie gewünscht bekamen wir mehrere Werte von der Funktion zurückgegeben.
So, jetzt unsere Funktion ist es einfach, verhält sich wie eine Tabelle. Es kann eine situation, wo Sie wollen, dass diese durch Kommata getrennte Werte zu einem Teil der "IN" - Klausel.
Beispiel :
Aber die obige Abfrage funktioniert nicht, wie '1,2,3,4' ist eine Zeichenkette und nicht für einzelne Nummern. Um dieses problem zu lösen Sie können einfach verwenden Sie folgende Abfrage aus.
Referenzen : http://www.oraclebin.com/2012/12/returning-multiple-values-from-function.html
InformationsquelleAutor Sushant Butta