J'essaie d'exécuter une procédure stockée qui a plusieurs paramètres d'entrée et de sortie. La procédure ne peut être consultée que dans mon panneau Connexions en naviguant dans Autres utilisateurs | | Packages | | |.
Si je fais un clic droit, les éléments de menu sont "Order Members By..." et "Create Unit Test" (en grisé). La possibilité d'"exécuter" la procédure ne semble pas possible lorsqu'elle est accessible par l'utilisateur.
J'ai essayé de trouver un exemple de la façon de créer un bloc anonyme afin de pouvoir exécuter la procédure en tant que fichier SQL, mais je n'ai rien trouvé qui fonctionne.
Quelqu'un sait-il comment je peux exécuter cette procédure à partir de SQL Developer ? J'utilise la version 2.1.1.64.
Merci d'avance !
EDIT 1 :
La procédure que je veux appeler a cette signature :
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)
Si j'écris mon bloc anonyme comme ceci :
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;
Je reçois l'erreur :
Bind Varialbe "out1" is NOT DECLCARED
anonymous block completed
J'ai essayé d'initialiser les variables out* :
out1 VARCHAR2(100) := '';
mais je reçois la même erreur :
EDIT 2 :
En me basant sur la réponse d'Alex, j'ai essayé de supprimer les deux points devant les paramètres et j'ai obtenu ceci :
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:
0 votes
Duplicata possible de Meilleur moyen/outil pour obtenir les résultats d'une procédure de package oracle
0 votes
Essayez de placer les variables OUT à l'intérieur du BEGIN, avant l'instruction d'exécution de la procédure.
0 votes
Vous n'avez pas besoin de la
execute
; dans PL/SQL, cela est interprété comme le début deexecute immediate
ce qui est différent de SQLexecute
.0 votes
La suppression de "execute" ne fait pas de différence. J'obtiens toujours "Bind Variable...is NOT DECLARED".
0 votes
Si la section DECLARE se trouve à l'intérieur du bloc de départ (c'est-à-dire BEGIN DECLARE .... EXECUTE... END, je reçois toujours la même erreur de liaison de variable.
2 votes
@sdoca : vous confondez deux approches maintenant ; avec votre version edit 2 il suffit de supprimer le mot
execute
. Le sitedeclare
doit se trouver avant lebegin
. Je pense que @OMG voulait dire que vous pouvez déclarer les variables dans SQL Developer avant le bloc anonyme avec la balisevariable
et ensuite utiliser le mot-clé:out1
syntaxe telle que vous l'aviez à l'origine, auquel cas vous n'avez pas dedeclare
du tout. Mais vous mélangez les deux dans votre dernier commentaire.1 votes
Oui, je savais que j'étais confus, mais je ne savais pas vraiment où et comment.