2010-01-22 4 views
7

J'ai une procédure stockée dans Oracle et que vous voulez tester à partir de SQLPlus.Comment exécuter une procédure stockée à partir de SQL Plus?

Si je

execute my_stored_proc (-1,2,0.01) 

Je reçois cette erreur

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

Le début de la proc est ce

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

Ai-je besoin de fournir un var pour la sortir paramètre, est donc comment? J'ai essayé:

var z NUMBER; 

Mais obtenir cette erreur lorsque je tente de lancer le proc

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

Aussi quand j'étais dans SQL Developer il m'a donné l'usage et il montre les entrées dans l'ordre inverse, qui est:

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

-vous les fournir dans l'ordre inverse ou est-ce quelque chose avec SQL Developer

Je n'ai pas écrit la procédure et je ne traite pas normalement avec eux donc je pourrais manquer quelque chose d'évident.

Merci

Répondre

14

Vous avez deux options, un bloc PL/SQL ou SQL * Plus lient les variables:

var z number 

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

print z 
-1

Vous avez oublié de mettre z comme une variable de liaison.

La commande suivante execute une instruction PL/SQL qui fait référence à une procédure stockée:

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

Notez que la valeur retournée par la procédure stockée est en cours de retour dans: Z

+3

-1 fonction peut être utilisé dans une expression, une procédure ne peut pas. –

Questions connexes