0
votes

Comment appeler la procédure stockée avec uniquement le paramètre OUT?

J'ai créé une procédure stockée dans Oracle 11G:

CREATE OR REPLACE PROCEDURE greetings(cnt OUT VARCHAR2) 
AS 
BEGIN
    SELECT COUNT(*) 
    INTO cnt 
    FROM SYS.all_tables; 
END greetings;


3 commentaires

Quelle erreur obtenez-vous? Avez-vous essayé EXEC salutations (null);


Erreur de démarrage à la ligne: 1 dans la commande - Rapport d'erreur d'appel de messages d'appel - ORA-06576: NOT UNE NOM DE FONCTION OU PROCÉDURE VALABLE 06576. 00000 - "NON UN NOM DE FONCTIONNEMENT VALABLE OU NOM DE PROCÉDURE" * Cause: Impossible de trouver une fonction (si un la clause était présente) ou une procédure (si la déclaration n'ait pas eu une clause) à appeler. * Action: Modifiez la déclaration pour appeler une fonction ou une procédure IAM Obtenir cette erreur pour


Pas la source de votre problème, mais quelques suggestions de style. Premièrement, si vous avez un code de code qui ne met pas à jour les données et ne renvoie aucun résultat, cela devrait vraiment être une fonction non une procédure. Si c'était une fonction, vous pouvez facilement sélectionner plutôt que nécessaire pour construire un bloc anonyme pour l'appeler. Deuxièmement, étant donné que cnt est numérique, vous voulez vraiment déclarer le paramètre numérique plutôt qu'un varchar2 .


3 Réponses :


2
votes

La procédure nécessite un paramètre, donc la fournir.

SQL> var l_cnt number;
SQL> exec greetings(:l_cnt);

PL/SQL procedure successfully completed.

SQL> print l_cnt;

     L_CNT
----------
        87


2 commentaires

Lorsque j'exécute une procédure de message de voeux, je reçois des "salutations de procédure compilées" au lieu de "procédure PL / SQL complétée avec succès". Est-ce correct?


Compilé <> terminé. Une fois que vous avez bien compilé, vous pouvez l'exécuter et - si tout va bien, cela sera terminé avec succès. Par conséquent, oui - la première étape est OK.



0
votes

Il n'y a pas de problème avec le corps de la procédure. Vous pouvez appeler comme ceci:

SQL> print nmr
nmr
---------
306


0 commentaires

1
votes

3 commentaires

Je suis nouveauB ici, quand j'ai essayé Var N Number Call Workings (: N); J'ai besoin d'entrer lié et je reçois 01008 toutes les variables ne sont pas liées


Var (Acable) est une commande SQL * Plus, donc si vous souhaitez que cela fonctionne dans le développeur ou le crapaud SQL ou quelque chose d'autre, vous devrez vérifier comment le gérer. Quel outil utilisez-vous?


J'utilise le développeur Oracle SQL