Supposons que vous voulez faire un update sur un enregistrement et par la même occasion récupérer d'autres champs dont vous avez besoin dans votre application la solution la plus répondue et de faire un update puis un select, si vous avez 4000 enregistrements vous aurez 4000 select et 4000 update.
La clause RETURNING méconnue dans les instructions update et delete dans oracle permet de faire la même chose mais dans une seule instruction update, un exemple simple la table suivante :
SQL> select * from études;
6 ligne(s) sélectionnée(s).
On déclare une variable attachée nom ou on va récupérer le champ prof et on ajoute la clause returning à l'instruction update.
SQL> variable nom varchar2(20);
SQL> update études
2 set prof='hantz'
3 where id=5
4 returning prof into :nom;
1 ligne mise à jour.
Et :
SQL> print :nom
NOM
---------------------------------
hartz
Vous pourrez récupérer plusieurs champs tant qu'il y a des variables, la clause returning marche aussi avec l'instruction delete.
SQL> delete etudes
2 where id=6
3 returning prof into :nom;
1 ligne supprimée.
SQL> print :nom
NOM
---------------------------------
ramboo
La clause RETURNING méconnue dans les instructions update et delete dans oracle permet de faire la même chose mais dans une seule instruction update, un exemple simple la table suivante :
SQL> select * from études;
ID | MAT | PROF |
1 | maths | kats |
3 | physiques | jay |
2 | arabe | kamel |
4 | français | hector |
5 | philo | hartz |
6 | sport | ramboo |
6 ligne(s) sélectionnée(s).
On déclare une variable attachée nom ou on va récupérer le champ prof et on ajoute la clause returning à l'instruction update.
SQL> variable nom varchar2(20);
SQL> update études
2 set prof='hantz'
3 where id=5
4 returning prof into :nom;
1 ligne mise à jour.
Et :
SQL> print :nom
NOM
---------------------------------
hartz
Vous pourrez récupérer plusieurs champs tant qu'il y a des variables, la clause returning marche aussi avec l'instruction delete.
SQL> delete etudes
2 where id=6
3 returning prof into :nom;
1 ligne supprimée.
SQL> print :nom
NOM
---------------------------------
ramboo
0 comments:
Enregistrer un commentaire