Je voudrais savoir pourquoi le code suivant ne permet l'affichage du nombre des lignes traité :?:
@+SALICode:
1
2
3
4
5
6
7
8
9
10
11
12 ..... FOR emp_rec IN (SELECT * FROM emp ) LOOP ...... END LOOP; DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT); ......
Version imprimable
Je voudrais savoir pourquoi le code suivant ne permet l'affichage du nombre des lignes traité :?:
@+SALICode:
1
2
3
4
5
6
7
8
9
10
11
12 ..... FOR emp_rec IN (SELECT * FROM emp ) LOOP ...... END LOOP; DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT); ......
%ROWCOUNT ne s'applique que dans le cas des curseurs explicites.
Une instruction %ROWCOUNT placee la ou elle est suggeree ramera le compteur de ligne relevant du dernier curseur explicite execute, fut-il place dans la boucle ou avant la boucle.
Techniquement, ca marche; en revanche, question proprete, c'est assez laid a mon gout.
je croyais que j'utilisait un curseur implicite.
Est ce que tu 'as une idée comment afficher le contenu de la Table EMP en utilisant un curseur implicite :?:
Justement, un curseur implicite sera cree en reponse a l'utilisation du FOR-LOOP. Donc %ROWCOUNT, %ISOPEN, %FOUND, %NOTFOUND ne peuvent etre employees.
normalement avec un curseur implicite le nombre de lignes affecteé par la derniere instruction SQL se trouve dans l'attribut SQL%ROWCOUNT
Les operations DMLs standards comme SELECT INTO, UPDATE, DELETE, INSERT provoquent aussi la creation de curseurs implicites sur lesquels SQL%ROWCOUNT fonctionnera, c'est vrai, mais cela ne s'applique pas sur les curseurs implicitement cree par les FOR-LOOP.