49 votes

Appel d'une procédure stockée dans Oracle avec les paramètres IN et OUT

J'ai cette procédure :

 CREATE OR REPLACE PROCEDURE PROC1(invoicenr IN NUMBER, amnt OUT NUMBER)
AS BEGIN
SELECT AMOUNT INTO amnt FROM INVOICE WHERE INVOICE_NR = invoicenr;
END;

Donc, quand je l'exécute comme ça, il ne retourne absolument rien :

 DECLARE
    amount NUMBER;
BEGIN
    PROC1(1000001, amount);
    dbms_output.put_line(amount);
END;

BTW j'utilise DreamCoder pour Oracle. Y a-t-il un problème avec la procédure elle-même ou avec la façon dont je l'appelle ? Il y a une entrée dans la table INVOICE avec INVOICE_NR égal à 1000001.

65voto

Keerthi Points 739

Si vous définissez la sortie du serveur en mode ON avant tout le code, cela fonctionne, sinon put_line() ne fonctionnera pas. Essayez-le !

Le code est,

 set serveroutput on;
CREATE OR REPLACE PROCEDURE PROC1(invoicenr IN NUMBER, amnt OUT NUMBER)
AS BEGIN
SELECT AMOUNT INTO amnt FROM INVOICE WHERE INVOICE_NR = invoicenr;
END;

Et puis appelez la fonction telle qu'elle est :

 DECLARE
amount NUMBER;
BEGIN
PROC1(1000001, amount);
dbms_output.put_line(amount);
END;

3voto

Elneny Points 41

J'ai eu le même problème. J'ai utilisé un déclencheur et dans ce déclencheur, j'ai appelé une procédure qui a calculé certaines valeurs en 2 variables OUT. Lorsque j'ai essayé d'imprimer le résultat dans le corps du déclencheur, rien ne s'est affiché à l'écran. Mais ensuite, j'ai résolu ce problème en créant 2 variables locales dans une fonction, j'ai calculé ce dont j'avais besoin avec elles et enfin, j'ai copié ces variables dans vos variables de procédure OUT. J'espère que ce sera utile et réussi !

1voto

Alvin Points 9

Allez dans Menu Tool -> SQL Output, Exécutez l'instruction PL/SQL, la sortie s'affichera sur le panneau de sortie SQL.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X