Ich versuche eine gespeicherte Prozedur auszuführen, die mehrere ein- und ausgehende Parameter hat. Das Verfahren kann nur in meinem Verbindungsbedienfeld durch Navigieren in Andere Benutzer | angezeigt werden | Pakete | |Gespeicherte Prozedur in SQL Developer ausführen?
Wenn ich mit der rechten Maustaste klicke, sind die Menüpunkte "Order Members By ..." und "Create Unit Test" (ausgegraut). Die Möglichkeit, die Prozedur "zu starten", scheint nicht möglich zu sein, wenn der Benutzer darauf zugreift.
Ich habe versucht, ein Beispiel für die Erstellung eines anonymen Blocks zu finden, so dass ich die Prozedur als SQL-Datei ausführen kann, aber nichts gefunden habe, das funktioniert.
Weiß jemand, wie ich diese Prozedur von SQL Developer ausführen kann? Ich benutze Version 2.1.1.64.
Vielen Dank im Voraus!
EDIT 1:
Das Verfahren ich anrufen will hat diese Unterschrift:
user.package.procedure(
p_1 IN NUMBER,
p_2 IN NUMBER,
p_3 OUT VARCHAR2,
p_4 OUT VARCHAR2,
p_5 OUT VARCHAR2,
p_6 OUT NUMBER)
Wenn ich meine anonymen Block wie folgt schreiben:
DECLARE
out1 VARCHAR2(100);
out2 VARCHAR2(100);
out3 VARCHAR2(100);
out4 NUMBER(100);
BEGIN
EXECUTE user.package.procedure (33,89, :out1, :out2, :out3, :out4);
END;
erhalte ich die Fehler :
Bind Varialbe "out1" is NOT DECLCARED
anonymous block completed
Ich habe versucht, die aus * Variablen initialisiert:
out1 VARCHAR2(100) := '';
aber bekommen den gleichen Fehler:
EDIT 2:
Basierend auf Alex 'Antwort, habe ich versucht, die Doppelpunkte Entfernen von vor dem params und erhalten Sie diese:
Error starting at line 1 in command:
DECLARE
out1 VARCHAR2(100);
out2 VARCHAR2(100);
out3 VARCHAR2(100);
out4 NUMBER(100);
BEGIN
EXECUTE user.package.procedure (33,89, out1, out2, out3, out4);
END;
Error report:
ORA-06550: line 13, column 17:
PLS-00103: Encountered the symbol "USER" when expecting one of the following:
:= . (@ % ; immediate
The symbol ":=" was substituted for "USER" to continue.
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
mögliche Duplikate von [Der beste Weg/Werkzeug, um die Ergebnisse aus einem Oracle-Paket-Verfahren zu erhalten] (http://stackoverflow.com/questions/3526798/best-way-tool-to-get-the-results-from- an-oracle-package-procedure) –
Versuchen Sie, die OUT-Variablen in BEGIN zu setzen, bevor Sie die Prozedur ausführen. –
Sie brauchen nicht das 'execute'; in PL/SQL, das als Start von 'execute direkt' interpretiert wird, was sich von SQL 'execute' unterscheidet. –