Bonjour à tous,
Version Oracle: Enterprise Edition Release 11.2.0.1.0 - 64bit
OS: Linux Fedora Core 17 (X86_64)
J'ai une question concernant la déclaration et la définition des Explicit Cursors. D'après la documentation en ligne
http://docs.oracle.com/cd/E11882_01/...c.htm#BABHEBAI
On peut très bien d'abord déclarer un Cursor et ensuite, toujours dans le même bloc PL/SQL le définir complètement avec le SELECT qui va avec.
En se basant sur l'exemple 6-5 du lien ci-dessus, j'ai essayé le bloc suivant:
Comme vous constatez, d'après oracle la déclaration et définition de C1 est ambigue puisque j'ai enlevé la clause RETURN hr.employees%ROWTYPE dans la définition. Par contre si vous regardez bien l'exmple de oracle dans le lien que j'ai donné ci-dessus, j'ai procédé exactement (enfin, il me semble ) comme la documentation (regardez le cursor c3 dans Example 6-5 dans le lien que j'ai donné). Du coup, je n'arrive pas à trouver mon erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 SQL> DECLARE 2 CURSOR c1 RETURN hr.employees%ROWTYPE; -- Ici je déclarer le Cursor 3 CURSOR c1 IS -- Ici je définie le Cursor 4 SELECT * 5 FROM hr.employees 6 WHERE department_id = 100; 7 BEGIN 8 FOR emp In c1 LOOP 9 sys.dbms_output.put_line(emp.employee_id); 10 END LOOP; 11 END; 12 / FOR emp In c1 LOOP * ERROR at line 8: ORA-06550: line 8, column 16: PLS-00307: too many declarations of 'C1' match this call ORA-06550: line 8, column 5: PL/SQL: Statement ignored SQL>
Je voudrais demander de bien vouloir m'éclairer sur ce problème.
Partager