Sie können keine Prozedur in einer SELECT-Anweisung verwenden. Funktionen ja (mit entsprechenden Rückgabetypen), Prozeduren nein. Elemente in einer SELECT-Liste müssen Ausdrücke sein, die auf einen Wert aufgelöst werden müssen. Eine Prozedur erfüllt dieses Kriterium nicht.
Und ja, Sie müssen die Ausgabeparameter in Ihrer Parameterliste erwähnen. Die Prozedur wird diese Parameter auf bestimmte Werte setzen, daher muss für jeden ein Ausgabeparameter angegeben werden, um sie zu empfangen. @schurik zeigt Ihnen, wie dies normalerweise in PL/SQL gemacht wird. @Datajam ist nah dran, wie Sie es in SQL*Plus machen würden, lässt jedoch die Ausgabeparameter aus:
SQL> var num_var number
SQL> var txt_var varchar2(15)
SQL> var txt_var2 varchar2(20)
SQL> exec PKGName.ProcedureName(1,'10/10/2010','10/23/2010',7,7, :num_var, :txt_var, :txt_var2);
PL/SQL-Prozedur wurde erfolgreich abgeschlossen
num_var
---------------
42
txt_var
-----------------
some text
txt_var2
-------------------
some other text
SQL>
0 Stimmen
Ich denke, diese Frage passt auch zu oracleoverflow.com
1 Stimmen
Sie können keine Funktion mit Ausgabeparametern aus einer SQL-Anweisung aufrufen. Wie DCookie bereits erwähnt hat, können Sie keine Prozedur aufrufen. Es können nur Funktionen aufgerufen werden.