2010-01-22 6 views
7

Ich habe eine gespeicherte Prozedur in Oracle und möchte es von SQLPlus testen.Wie Sie gespeicherte Prozedur von SQL Plus ausführen?

Wenn ich

execute my_stored_proc (-1,2,0.01) 

ich diesen Fehler

PLS-00306: wrong number or types of arguments in call to my_stored_proc 

Der Anfang für die proc dies

create or replace PROCEDURE my_stored_proc 
(a IN NUMBER, 
    b IN NUMBER, 
    c IN NUMBER, 
    z out NUMBER 
) AS .... 

Muss ich das eine var für die Out zur Verfügung stellen müssen Parameter, ist so wie? Ich habe versucht:

var z NUMBER; 

Aber diese Fehlermeldung erhalten, wenn ich versuche, die proc

execute my_stored_proc (-1,2,0.01,z) 
PLS-00201: identifier 'Z' must be declared 

auch ausgeführt werden, wenn ich in SQL-Entwickler war es gab mir die Nutzung und die Eingänge in umgekehrter Reihenfolge zeigen, das heißt:

execute my_stored_proc(z number,c number,b number,a number); 

Haben Sie sie in umgekehrter Reihenfolge zur Verfügung stellen oder ist das nur etwas mit SQL-Entwickler

Ich habe die Prozedur nicht geschrieben, und normalerweise behandle ich sie nicht, damit ich etwas Offensichtliches übersehen kann.

Dank

Antwort

14

Sie haben zwei Möglichkeiten, ein PL/SQL-Block oder SQL * Plus Variablen binden:

var z number 

execute my_stored_proc (-1,2,0.01,:z) 

print z 
-1

Sie haben vergessen, z als Bindevariable zu setzen.

Der Befehl folgend EXECUTE läuft eine PL/SQL-Anweisung, die eine gespeicherte Prozedur verweist:

SQL> EXECUTE - 
> :Z := EMP_SALE.HIRE('JACK','MANAGER','JONES',2990,'SALES') 

Beachten Sie, dass der von der gespeicherten Prozedur zurückgegebene Wert wird Rückkehr in: Z

+3

-1 kann eine Funktion in einem Ausdruck verwendet werden, kann eine Prozedur nicht. –

Verwandte Themen