Création de procédure impossible - PLS-00103: Encountered the symbol "end-of-file"
Bonjour,
Je viens vers vous car je m'arrache mes quelques rares cheveux avec, je suis sur, une broutille :aie:
Voici un code qui marche bien.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| set feedback off
set serveroutput on
/* On cherche le nombre de personnes exerçant le metier passe en parametre. */
/* Declaration d'une variable car v_n_nb sera passee en parametre de type IN OUT a la procedure */
DECLARE
v_n_nb NUMBER;
/* Pas de CREATE OR REPLACE sinon erreurs de compilation */
PROCEDURE proc_nb_job (v_s_job IN VARCHAR2, v_n_nb IN OUT NUMBER) IS
BEGIN
SELECT count(*) INTO v_n_nb FROM emp WHERE job=v_s_job;
/* Recherche des noms des personnes */
CASE v_n_nb
WHEN 0 then
DBMS_OUTPUT.PUT_LINE('Aucune personne n''occupe le poste de ' || v_s_job || '.');
WHEN 1 then
DBMS_OUTPUT.PUT_LINE('Une seule personne occupe le poste de ' || v_s_job || '.');
ELSE
DBMS_OUTPUT.PUT_LINE(v_n_nb || ' personnes occupent le poste de ' || v_s_job || '.');
END CASE;
END;
BEGIN
/* Initialisation de la variable et appel de la procedure avec saisie par l'utilisateur du metier */
v_n_nb := 0;
proc_nb_job('&METIER', v_n_nb);
END;
/ |
Si je l'execute sous SQL*Plus :
Code:
1 2 3
| SQL> @toto
Enter value for metier: MANAGER
3 personnes occupent le poste de MANAGER. |
Là où je ne comprends plus rien, c'est quand je supprime l'appel à ma procédure dans mon fichier; mon objectif est dans ce cas de juste créer la procédure et de l'appeler dans un autre script sql ou sous SQL*Plus.
Le nouveau code qui plante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| set serveroutput on
/* Declaration d'une variable car v_n_nb sera passee en parametre de type IN OUT a la procedure */
DECLARE
v_n_nb NUMBER;
/* Pas de CREATE OR REPLACE sinon erreurs de compilation */
PROCEDURE proc_nb_job (v_s_job IN VARCHAR2, v_n_nb IN OUT NUMBER) IS
BEGIN
SELECT count(*) INTO v_n_nb FROM emp WHERE job=v_s_job;
/* Recherche des noms des personnes */
CASE v_n_nb
WHEN 0 then
DBMS_OUTPUT.PUT_LINE('Aucune personne n''occupe le poste de ' || v_s_job || '.');
WHEN 1 then
DBMS_OUTPUT.PUT_LINE('Une seule personne occupe le poste de ' || v_s_job || '.');
ELSE
DBMS_OUTPUT.PUT_LINE(v_n_nb || ' personnes occupent le poste de ' || v_s_job || '.');
END CASE;
END;
/ |
J'ai l'erreur suivante et je n'y comprends rien de rien; je suis sur que c'est trois fois rien mais je m'y casse les dents :aie:.
Code:
1 2 3 4 5 6 7
| SQL> @toto
END;
*
ERROR at line 18:
ORA-06550: line 18, column 4:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
begin function pragma procedure |