Bonjour.

J'ai un petit soucis lors de la déclaration d'une procédure à l'intérieur d'un bloc declare :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
DECLARE
       PROCEDURE P_Echo
         (pVar NUMBER)
       IS
       BEGIN
            DBMS_OUTPUT.put_line(pVar||' hello world');
       END P_Echo;    
 
       vVar NUMBER;
BEGIN
     vVar := 1;
     P_Echo(vVar);
END;
/
Dans ce sens là, il me met l'erreur suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
ORA-06550: line 9, column 8:
PLS-00103: Encountered the symbol "VVAR" when expecting one of the following:
 
 begin function package pragma procedure form
Si je déclare ma variable vVar avant la procédure, ça compile bien, autrement dit, le code suivant fonctionne bien.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
DECLARE
       vVar NUMBER;
 
       PROCEDURE P_Echo
         (pVar NUMBER)
       IS
       BEGIN
            DBMS_OUTPUT.put_line(pVar||' hello world');
       END P_Echo;    
BEGIN
     vVar := 1;
     P_Echo(vVar);
END;
/
Mais je ne comprends pas vraiment pourquoi.

Aussi je me demandai si quelqu'un pouvait m'expliquer pourquoi je ne peux pas déclarer de variables après avoir déclaré de procédures dans un bloc declare.

Je n'avais encore jamais fait ça car je ne trouvais pas très propre de déclarer une procédure dans un bloc DECLARE. Cependant, cela évite de créer un objet dans la BDD. Comme le script que je veux écrire ne doit pas tourner souvent, je me dis qu'il est inutile de créer un objet PROCEDURE pour ça.

Merci d'avance.

Cdt.

Bahan