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 Réponses :
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
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.
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
Concern concernant l'exemple d'appel code> CODE>, il est expliqué dans Exécuter reconnaît une procédure stockée, l'appel n'est pas a>. Il n'est pas évident de la documentation de la syntaxe mais nécessite des supports, il est donc (plutôt inutile) rejetant le tout et donnant l'impression que salutations code> est le problème, quand il n'est en réalité pas:
SQL> var n number
SQL>
SQL> call greetings(:n);
Call completed.
SQL> print :n
N
----------
134
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) CODE> 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
Quelle erreur obtenez-vous? Avez-vous essayé
EXEC salutations (null); code>
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 code> plutôt que nécessaire pour construire un bloc anonyme pour l'appeler. Deuxièmement, étant donné que
cnt code> est numérique, vous voulez vraiment déclarer le paramètre numérique plutôt qu'un
varchar2 code>.