Foreach en SQL ?

bootchoz Messages postés 88 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 17 septembre 2006 - 2 août 2006 à 11:39
bootchoz Messages postés 88 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 17 septembre 2006 - 11 août 2006 à 14:45
existe-t-il un equivalent de foreach en SQL ?


je fais une selection sur une table et pour chaque resultat je traite un update sur une autre table de la base.



foreach (id_role in (select role.id_role from formulaire, proposer_role, role, etre_attribue where formulaire.id_form=proposer_role.id_form and proposer_role.id_role=role.id_role and role.id_role=etre_attribue.id_role and [mailto:etre_attribue.id_pers=@id_pers etre_attribue.id_pers=@id_pers] and [mailto:formulaire.id_form=@id_form formulaire.id_form=@id_form]))
 begin
  UPDATE etre_attribue
  SET[mailto:date_sup=@date_dup date_sup=@date_dup]
 end
merci de votre aide...
A voir également:

5 réponses

cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 8
2 août 2006 à 14:20
Il n'y a pas de foreach en T-SQL sur SQL Server et pas non plus de boucles FOR.


Pour faire ce que tu explique plus haut, soit on utilise un curseur, mais qui en général est une solution particulièrement lente...
Ou on modifie la requête :








UPDATE

etre_attribue


SET
date_sup

=


@date_dup


WHERE
id_role

=



(
select



role
.
id_role

from
formulaire

,
proposer_role

,



role
,
etre_attribue

where
formulaire

.
id_form

=
proposer_role

.
id_form

and
proposer_role

.
id_role

=
role
.
id_role

and



role
.
id_role

=
etre_attribue

.
id_role

and
etre_attribue

.
id_pers

=
@id_pers

and
formulaire

.
id_form

=
@id_form



)



C'est plus rapide, plus propre, etc.

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
0
Rejoignez-nous