-----Message d'origine-----
Bonjour
Je travaille depuis quelques temps sur SQL Server 200 et
problèmes lorsque j'affecte à un curseur une selection
jointure.
Lorsque je teste la requete de selection cela fonctionne
l'analyseur de requete mais cela bloque ma procédure
executée.
Par contre lorsque je definis un top 100 ou plus dans ma
fonctionne tres bien même si la valeur du top est
tuples selectionnés
Je ne comprend pas.
Quelqu'un pourait il m'expliquer ?
Cordialement,
BS
.
-----Message d'origine-----
Bonjour
Je travaille depuis quelques temps sur SQL Server 200 et
problèmes lorsque j'affecte à un curseur une selection
jointure.
Lorsque je teste la requete de selection cela fonctionne
l'analyseur de requete mais cela bloque ma procédure
executée.
Par contre lorsque je definis un top 100 ou plus dans ma
fonctionne tres bien même si la valeur du top est
tuples selectionnés
Je ne comprend pas.
Quelqu'un pourait il m'expliquer ?
Cordialement,
BS
.
-----Message d'origine-----
Bonjour
Je travaille depuis quelques temps sur SQL Server 200 et
problèmes lorsque j'affecte à un curseur une selection
jointure.
Lorsque je teste la requete de selection cela fonctionne
l'analyseur de requete mais cela bloque ma procédure
executée.
Par contre lorsque je definis un top 100 ou plus dans ma
fonctionne tres bien même si la valeur du top est
tuples selectionnés
Je ne comprend pas.
Quelqu'un pourait il m'expliquer ?
Cordialement,
BS
.
Bonjour,
As tu mis un "FETCH next" quelque part?
Ce que tu décris est un boucle infini je pense :)
A toute
Portekoi
>-----Message d'origine-----
>Bonjour
>
>Je travaille depuis quelques temps sur SQL Server 200 et
j'ai remarqué des
>problèmes lorsque j'affecte à un curseur une selection
comportant une
>jointure.
>
>Lorsque je teste la requete de selection cela fonctionne
très bien sous
>l'analyseur de requete mais cela bloque ma procédure
chaque fois qu'elle est
>executée.
>
>Par contre lorsque je definis un top 100 ou plus dans ma
procédure, elle
>fonctionne tres bien même si la valeur du top est
supérieur au nombre de
>tuples selectionnés
>
>Je ne comprend pas.
>Quelqu'un pourait il m'expliquer ?
>
>Cordialement,
>BS
>
>.
>
Bonjour,
As tu mis un "FETCH next" quelque part?
Ce que tu décris est un boucle infini je pense :)
A toute
Portekoi
>-----Message d'origine-----
>Bonjour
>
>Je travaille depuis quelques temps sur SQL Server 200 et
j'ai remarqué des
>problèmes lorsque j'affecte à un curseur une selection
comportant une
>jointure.
>
>Lorsque je teste la requete de selection cela fonctionne
très bien sous
>l'analyseur de requete mais cela bloque ma procédure
chaque fois qu'elle est
>executée.
>
>Par contre lorsque je definis un top 100 ou plus dans ma
procédure, elle
>fonctionne tres bien même si la valeur du top est
supérieur au nombre de
>tuples selectionnés
>
>Je ne comprend pas.
>Quelqu'un pourait il m'expliquer ?
>
>Cordialement,
>BS
>
>.
>
Bonjour,
As tu mis un "FETCH next" quelque part?
Ce que tu décris est un boucle infini je pense :)
A toute
Portekoi
>-----Message d'origine-----
>Bonjour
>
>Je travaille depuis quelques temps sur SQL Server 200 et
j'ai remarqué des
>problèmes lorsque j'affecte à un curseur une selection
comportant une
>jointure.
>
>Lorsque je teste la requete de selection cela fonctionne
très bien sous
>l'analyseur de requete mais cela bloque ma procédure
chaque fois qu'elle est
>executée.
>
>Par contre lorsque je definis un top 100 ou plus dans ma
procédure, elle
>fonctionne tres bien même si la valeur du top est
supérieur au nombre de
>tuples selectionnés
>
>Je ne comprend pas.
>Quelqu'un pourait il m'expliquer ?
>
>Cordialement,
>BS
>
>.
>
-----Message d'origine-----
D'abord merci pour la reponse.
J'utilise un FETCH cur INTO @...
Je pense que c'est pareil mais j'utilise cette boucle
procedures meme lorsqu'elles ne contiennent pas de
cela marche tres bien. Je ne comprend pas comment je
boucle infini puisque ma selection est correct sous
BS
"" a écrit :Bonjour,
As tu mis un "FETCH next" quelque part?
Ce que tu décris est un boucle infini je pense :)
A toute
Portekoi
>-----Message d'origine-----
>Bonjour
>
>Je travaille depuis quelques temps sur SQL Server 200
j'ai remarquÃf© des
>problÃf¨mes lorsque j'affecte Ãf un curseur une
comportant une
>jointure.
>
>Lorsque je teste la requete de selection cela
trÃf¨s bien sous
>l'analyseur de requete mais cela bloque ma
chaque fois qu'elle est
>executÃf©e.
>
>Par contre lorsque je definis un top 100 ou plus dans
procÃf©dure, elle
>fonctionne tres bien mÃfªme si la valeur du top est
supÃf©rieur au nombre de
>tuples selectionnÃf©s
>
>Je ne comprend pas.
>Quelqu'un pourait il m'expliquer ?
>
>Cordialement,
>BS
>
>.
>
.
-----Message d'origine-----
D'abord merci pour la reponse.
J'utilise un FETCH cur INTO @...
Je pense que c'est pareil mais j'utilise cette boucle
procedures meme lorsqu'elles ne contiennent pas de
cela marche tres bien. Je ne comprend pas comment je
boucle infini puisque ma selection est correct sous
BS
"anonymous@discussions.microsoft.com" a écrit :
Bonjour,
As tu mis un "FETCH next" quelque part?
Ce que tu décris est un boucle infini je pense :)
A toute
Portekoi
>-----Message d'origine-----
>Bonjour
>
>Je travaille depuis quelques temps sur SQL Server 200
j'ai remarquÃf© des
>problÃf¨mes lorsque j'affecte Ãf un curseur une
comportant une
>jointure.
>
>Lorsque je teste la requete de selection cela
trÃf¨s bien sous
>l'analyseur de requete mais cela bloque ma
chaque fois qu'elle est
>executÃf©e.
>
>Par contre lorsque je definis un top 100 ou plus dans
procÃf©dure, elle
>fonctionne tres bien mÃfªme si la valeur du top est
supÃf©rieur au nombre de
>tuples selectionnÃf©s
>
>Je ne comprend pas.
>Quelqu'un pourait il m'expliquer ?
>
>Cordialement,
>BS
>
>.
>
.
-----Message d'origine-----
D'abord merci pour la reponse.
J'utilise un FETCH cur INTO @...
Je pense que c'est pareil mais j'utilise cette boucle
procedures meme lorsqu'elles ne contiennent pas de
cela marche tres bien. Je ne comprend pas comment je
boucle infini puisque ma selection est correct sous
BS
"" a écrit :Bonjour,
As tu mis un "FETCH next" quelque part?
Ce que tu décris est un boucle infini je pense :)
A toute
Portekoi
>-----Message d'origine-----
>Bonjour
>
>Je travaille depuis quelques temps sur SQL Server 200
j'ai remarquÃf© des
>problÃf¨mes lorsque j'affecte Ãf un curseur une
comportant une
>jointure.
>
>Lorsque je teste la requete de selection cela
trÃf¨s bien sous
>l'analyseur de requete mais cela bloque ma
chaque fois qu'elle est
>executÃf©e.
>
>Par contre lorsque je definis un top 100 ou plus dans
procÃf©dure, elle
>fonctionne tres bien mÃfªme si la valeur du top est
supÃf©rieur au nombre de
>tuples selectionnÃf©s
>
>Je ne comprend pas.
>Quelqu'un pourait il m'expliquer ?
>
>Cordialement,
>BS
>
>.
>
.
Essaye de mettre un compteur dans ta boucle pour voir ce
qui se passe...
>-----Message d'origine-----
>D'abord merci pour la reponse.
>
>J'utilise un FETCH cur INTO @...
>Je pense que c'est pareil mais j'utilise cette boucle
pour tous mes
>procedures meme lorsqu'elles ne contiennent pas de
requete avec jointure et
>cela marche tres bien. Je ne comprend pas comment je
pourrais avoir une
>boucle infini puisque ma selection est correct sous
l'analyseur de requete.
>
>BS
>
>
>
>"" a écrit :
>
>> Bonjour,
>>
>> As tu mis un "FETCH next" quelque part?
>>
>> Ce que tu décris est un boucle infini je pense :)
>>
>> A toute
>>
>> Portekoi
>>
>> >-----Message d'origine-----
>> >Bonjour
>> >
>> >Je travaille depuis quelques temps sur SQL Server 200
et
>> j'ai remarquÃf© des
>> >problÃf¨mes lorsque j'affecte Ãf un curseur une
selection
>> comportant une
>> >jointure.
>> >
>> >Lorsque je teste la requete de selection cela
fonctionne
>> trÃf¨s bien sous
>> >l'analyseur de requete mais cela bloque ma
procÃf©dure
>> chaque fois qu'elle est
>> >executÃf©e.
>> >
>> >Par contre lorsque je definis un top 100 ou plus dans
ma
>> procÃf©dure, elle
>> >fonctionne tres bien mÃfªme si la valeur du top est
>> supÃf©rieur au nombre de
>> >tuples selectionnÃf©s
>> >
>> >Je ne comprend pas.
>> >Quelqu'un pourait il m'expliquer ?
>> >
>> >Cordialement,
>> >BS
>> >
>> >.
>> >
>>
>.
>
Essaye de mettre un compteur dans ta boucle pour voir ce
qui se passe...
>-----Message d'origine-----
>D'abord merci pour la reponse.
>
>J'utilise un FETCH cur INTO @...
>Je pense que c'est pareil mais j'utilise cette boucle
pour tous mes
>procedures meme lorsqu'elles ne contiennent pas de
requete avec jointure et
>cela marche tres bien. Je ne comprend pas comment je
pourrais avoir une
>boucle infini puisque ma selection est correct sous
l'analyseur de requete.
>
>BS
>
>
>
>"anonymous@discussions.microsoft.com" a écrit :
>
>> Bonjour,
>>
>> As tu mis un "FETCH next" quelque part?
>>
>> Ce que tu décris est un boucle infini je pense :)
>>
>> A toute
>>
>> Portekoi
>>
>> >-----Message d'origine-----
>> >Bonjour
>> >
>> >Je travaille depuis quelques temps sur SQL Server 200
et
>> j'ai remarquÃf© des
>> >problÃf¨mes lorsque j'affecte Ãf un curseur une
selection
>> comportant une
>> >jointure.
>> >
>> >Lorsque je teste la requete de selection cela
fonctionne
>> trÃf¨s bien sous
>> >l'analyseur de requete mais cela bloque ma
procÃf©dure
>> chaque fois qu'elle est
>> >executÃf©e.
>> >
>> >Par contre lorsque je definis un top 100 ou plus dans
ma
>> procÃf©dure, elle
>> >fonctionne tres bien mÃfªme si la valeur du top est
>> supÃf©rieur au nombre de
>> >tuples selectionnÃf©s
>> >
>> >Je ne comprend pas.
>> >Quelqu'un pourait il m'expliquer ?
>> >
>> >Cordialement,
>> >BS
>> >
>> >.
>> >
>>
>.
>
Essaye de mettre un compteur dans ta boucle pour voir ce
qui se passe...
>-----Message d'origine-----
>D'abord merci pour la reponse.
>
>J'utilise un FETCH cur INTO @...
>Je pense que c'est pareil mais j'utilise cette boucle
pour tous mes
>procedures meme lorsqu'elles ne contiennent pas de
requete avec jointure et
>cela marche tres bien. Je ne comprend pas comment je
pourrais avoir une
>boucle infini puisque ma selection est correct sous
l'analyseur de requete.
>
>BS
>
>
>
>"" a écrit :
>
>> Bonjour,
>>
>> As tu mis un "FETCH next" quelque part?
>>
>> Ce que tu décris est un boucle infini je pense :)
>>
>> A toute
>>
>> Portekoi
>>
>> >-----Message d'origine-----
>> >Bonjour
>> >
>> >Je travaille depuis quelques temps sur SQL Server 200
et
>> j'ai remarquÃf© des
>> >problÃf¨mes lorsque j'affecte Ãf un curseur une
selection
>> comportant une
>> >jointure.
>> >
>> >Lorsque je teste la requete de selection cela
fonctionne
>> trÃf¨s bien sous
>> >l'analyseur de requete mais cela bloque ma
procÃf©dure
>> chaque fois qu'elle est
>> >executÃf©e.
>> >
>> >Par contre lorsque je definis un top 100 ou plus dans
ma
>> procÃf©dure, elle
>> >fonctionne tres bien mÃfªme si la valeur du top est
>> supÃf©rieur au nombre de
>> >tuples selectionnÃf©s
>> >
>> >Je ne comprend pas.
>> >Quelqu'un pourait il m'expliquer ?
>> >
>> >Cordialement,
>> >BS
>> >
>> >.
>> >
>>
>.
>
Essaye de mettre un compteur dans ta boucle pour voir ce
qui se passe...
>-----Message d'origine-----
>D'abord merci pour la reponse.
>
>J'utilise un FETCH cur INTO @...
>Je pense que c'est pareil mais j'utilise cette boucle
pour tous mes
>procedures meme lorsqu'elles ne contiennent pas de
requete avec jointure et
>cela marche tres bien. Je ne comprend pas comment je
pourrais avoir une
>boucle infini puisque ma selection est correct sous
l'analyseur de requete.
>
>BS
>
>
>
>"" a écrit :
>
>> Bonjour,
>>
>> As tu mis un "FETCH next" quelque part?
>>
>> Ce que tu décris est un boucle infini je pense :)
>>
>> A toute
>>
>> Portekoi
>>
>> >-----Message d'origine-----
>> >Bonjour
>> >
>> >Je travaille depuis quelques temps sur SQL Server 200
et
>> j'ai remarquÃf© des
>> >problÃf¨mes lorsque j'affecte Ãf un curseur une
selection
>> comportant une
>> >jointure.
>> >
>> >Lorsque je teste la requete de selection cela
fonctionne
>> trÃf¨s bien sous
>> >l'analyseur de requete mais cela bloque ma
procÃf©dure
>> chaque fois qu'elle est
>> >executÃf©e.
>> >
>> >Par contre lorsque je definis un top 100 ou plus dans
ma
>> procÃf©dure, elle
>> >fonctionne tres bien mÃfªme si la valeur du top est
>> supÃf©rieur au nombre de
>> >tuples selectionnÃf©s
>> >
>> >Je ne comprend pas.
>> >Quelqu'un pourait il m'expliquer ?
>> >
>> >Cordialement,
>> >BS
>> >
>> >.
>> >
>>
>.
>
Essaye de mettre un compteur dans ta boucle pour voir ce
qui se passe...
>-----Message d'origine-----
>D'abord merci pour la reponse.
>
>J'utilise un FETCH cur INTO @...
>Je pense que c'est pareil mais j'utilise cette boucle
pour tous mes
>procedures meme lorsqu'elles ne contiennent pas de
requete avec jointure et
>cela marche tres bien. Je ne comprend pas comment je
pourrais avoir une
>boucle infini puisque ma selection est correct sous
l'analyseur de requete.
>
>BS
>
>
>
>"anonymous@discussions.microsoft.com" a écrit :
>
>> Bonjour,
>>
>> As tu mis un "FETCH next" quelque part?
>>
>> Ce que tu décris est un boucle infini je pense :)
>>
>> A toute
>>
>> Portekoi
>>
>> >-----Message d'origine-----
>> >Bonjour
>> >
>> >Je travaille depuis quelques temps sur SQL Server 200
et
>> j'ai remarquÃf© des
>> >problÃf¨mes lorsque j'affecte Ãf un curseur une
selection
>> comportant une
>> >jointure.
>> >
>> >Lorsque je teste la requete de selection cela
fonctionne
>> trÃf¨s bien sous
>> >l'analyseur de requete mais cela bloque ma
procÃf©dure
>> chaque fois qu'elle est
>> >executÃf©e.
>> >
>> >Par contre lorsque je definis un top 100 ou plus dans
ma
>> procÃf©dure, elle
>> >fonctionne tres bien mÃfªme si la valeur du top est
>> supÃf©rieur au nombre de
>> >tuples selectionnÃf©s
>> >
>> >Je ne comprend pas.
>> >Quelqu'un pourait il m'expliquer ?
>> >
>> >Cordialement,
>> >BS
>> >
>> >.
>> >
>>
>.
>
Essaye de mettre un compteur dans ta boucle pour voir ce
qui se passe...
>-----Message d'origine-----
>D'abord merci pour la reponse.
>
>J'utilise un FETCH cur INTO @...
>Je pense que c'est pareil mais j'utilise cette boucle
pour tous mes
>procedures meme lorsqu'elles ne contiennent pas de
requete avec jointure et
>cela marche tres bien. Je ne comprend pas comment je
pourrais avoir une
>boucle infini puisque ma selection est correct sous
l'analyseur de requete.
>
>BS
>
>
>
>"" a écrit :
>
>> Bonjour,
>>
>> As tu mis un "FETCH next" quelque part?
>>
>> Ce que tu décris est un boucle infini je pense :)
>>
>> A toute
>>
>> Portekoi
>>
>> >-----Message d'origine-----
>> >Bonjour
>> >
>> >Je travaille depuis quelques temps sur SQL Server 200
et
>> j'ai remarquÃf© des
>> >problÃf¨mes lorsque j'affecte Ãf un curseur une
selection
>> comportant une
>> >jointure.
>> >
>> >Lorsque je teste la requete de selection cela
fonctionne
>> trÃf¨s bien sous
>> >l'analyseur de requete mais cela bloque ma
procÃf©dure
>> chaque fois qu'elle est
>> >executÃf©e.
>> >
>> >Par contre lorsque je definis un top 100 ou plus dans
ma
>> procÃf©dure, elle
>> >fonctionne tres bien mÃfªme si la valeur du top est
>> supÃf©rieur au nombre de
>> >tuples selectionnÃf©s
>> >
>> >Je ne comprend pas.
>> >Quelqu'un pourait il m'expliquer ?
>> >
>> >Cordialement,
>> >BS
>> >
>> >.
>> >
>>
>.
>
A la place de "FETCH cur INTO @id,@code_rh", mets "FETCH
NEXT FROM cur INTO @id,@code_rh" et dis moi ce que cela
fais.
A la place de "FETCH cur INTO @id,@code_rh", mets "FETCH
NEXT FROM cur INTO @id,@code_rh" et dis moi ce que cela
fais.
A la place de "FETCH cur INTO @id,@code_rh", mets "FETCH
NEXT FROM cur INTO @id,@code_rh" et dis moi ce que cela
fais.
Tout a l heure j'ai lancer une procedure qui fais appel a une selection
par
jointure. Cette selection est vide mais cela a pris 1minute aavtn que la
procedure ne se termine. Dans ce cas la boucle n'est pas parcouru ce qui
m'incite a penser que cele ne viens pas de la boucle. QUAnd je lance la
requete avec l'analyseur, cela prend que 4s, vide ou non.
Voici ma procédure :
CREATE PROCEDURE maj_intra2
AS
BEGIN
DECLARE @code_rh VARCHAR(8), @id INT
DECLARE cur CURSOR FOR
select top 50000 p.id_per, i.code_rh new from intra i, personne p where
i.code_rh not in (select a.code_rh from personne a where
a.code_rh=i.code_rh)
and i.code_rh is not null and i.nom=p.nom and i.prenom=p.prenom and
i.entite=p.entite
OPEN cur
FETCH cur INTO @id,@code_rh
WHILE @@fetch_Status = 0
BEGIN
UPDATE personne SET code_rh=@code_rh WHERE id_per=@id
IF @@ERROR <>0
BEGIN
print @code_rh
CLOSE cur
DEALLOCATE cur
RETURN
END
FETCH cur INTO @id, @code_rh
END
CLOSE cur
DEALLOCATE cur
END
GO
BS
"" a écrit :Essaye de mettre un compteur dans ta boucle pour voir ce
qui se passe...
>-----Message d'origine-----
>D'abord merci pour la reponse.
>
>J'utilise un FETCH cur INTO @...
>Je pense que c'est pareil mais j'utilise cette boucle
pour tous mes
>procedures meme lorsqu'elles ne contiennent pas de
requete avec jointure et
>cela marche tres bien. Je ne comprend pas comment je
pourrais avoir une
>boucle infini puisque ma selection est correct sous
l'analyseur de requete.
>
>BS
>
>
>
>"" a écrit :
>
>> Bonjour,
>>
>> As tu mis un "FETCH next" quelque part?
>>
>> Ce que tu décris est un boucle infini je pense :)
>>
>> A toute
>>
>> Portekoi
>>
>> >-----Message d'origine-----
>> >Bonjour
>> >
>> >Je travaille depuis quelques temps sur SQL Server 200
et
>> j'ai remarquÃf© des
>> >problÃf¨mes lorsque j'affecte Ãf un curseur une
selection
>> comportant une
>> >jointure.
>> >
>> >Lorsque je teste la requete de selection cela
fonctionne
>> trÃf¨s bien sous
>> >l'analyseur de requete mais cela bloque ma
procÃf©dure
>> chaque fois qu'elle est
>> >executÃf©e.
>> >
>> >Par contre lorsque je definis un top 100 ou plus dans
ma
>> procÃf©dure, elle
>> >fonctionne tres bien mÃfªme si la valeur du top est
>> supÃf©rieur au nombre de
>> >tuples selectionnÃf©s
>> >
>> >Je ne comprend pas.
>> >Quelqu'un pourait il m'expliquer ?
>> >
>> >Cordialement,
>> >BS
>> >
>> >.
>> >
>>
>.
>
Tout a l heure j'ai lancer une procedure qui fais appel a une selection
par
jointure. Cette selection est vide mais cela a pris 1minute aavtn que la
procedure ne se termine. Dans ce cas la boucle n'est pas parcouru ce qui
m'incite a penser que cele ne viens pas de la boucle. QUAnd je lance la
requete avec l'analyseur, cela prend que 4s, vide ou non.
Voici ma procédure :
CREATE PROCEDURE maj_intra2
AS
BEGIN
DECLARE @code_rh VARCHAR(8), @id INT
DECLARE cur CURSOR FOR
select top 50000 p.id_per, i.code_rh new from intra i, personne p where
i.code_rh not in (select a.code_rh from personne a where
a.code_rh=i.code_rh)
and i.code_rh is not null and i.nom=p.nom and i.prenom=p.prenom and
i.entite=p.entite
OPEN cur
FETCH cur INTO @id,@code_rh
WHILE @@fetch_Status = 0
BEGIN
UPDATE personne SET code_rh=@code_rh WHERE id_per=@id
IF @@ERROR <>0
BEGIN
print @code_rh
CLOSE cur
DEALLOCATE cur
RETURN
END
FETCH cur INTO @id, @code_rh
END
CLOSE cur
DEALLOCATE cur
END
GO
BS
"anonymous@discussions.microsoft.com" a écrit :
Essaye de mettre un compteur dans ta boucle pour voir ce
qui se passe...
>-----Message d'origine-----
>D'abord merci pour la reponse.
>
>J'utilise un FETCH cur INTO @...
>Je pense que c'est pareil mais j'utilise cette boucle
pour tous mes
>procedures meme lorsqu'elles ne contiennent pas de
requete avec jointure et
>cela marche tres bien. Je ne comprend pas comment je
pourrais avoir une
>boucle infini puisque ma selection est correct sous
l'analyseur de requete.
>
>BS
>
>
>
>"anonymous@discussions.microsoft.com" a écrit :
>
>> Bonjour,
>>
>> As tu mis un "FETCH next" quelque part?
>>
>> Ce que tu décris est un boucle infini je pense :)
>>
>> A toute
>>
>> Portekoi
>>
>> >-----Message d'origine-----
>> >Bonjour
>> >
>> >Je travaille depuis quelques temps sur SQL Server 200
et
>> j'ai remarquÃf© des
>> >problÃf¨mes lorsque j'affecte Ãf un curseur une
selection
>> comportant une
>> >jointure.
>> >
>> >Lorsque je teste la requete de selection cela
fonctionne
>> trÃf¨s bien sous
>> >l'analyseur de requete mais cela bloque ma
procÃf©dure
>> chaque fois qu'elle est
>> >executÃf©e.
>> >
>> >Par contre lorsque je definis un top 100 ou plus dans
ma
>> procÃf©dure, elle
>> >fonctionne tres bien mÃfªme si la valeur du top est
>> supÃf©rieur au nombre de
>> >tuples selectionnÃf©s
>> >
>> >Je ne comprend pas.
>> >Quelqu'un pourait il m'expliquer ?
>> >
>> >Cordialement,
>> >BS
>> >
>> >.
>> >
>>
>.
>
Tout a l heure j'ai lancer une procedure qui fais appel a une selection
par
jointure. Cette selection est vide mais cela a pris 1minute aavtn que la
procedure ne se termine. Dans ce cas la boucle n'est pas parcouru ce qui
m'incite a penser que cele ne viens pas de la boucle. QUAnd je lance la
requete avec l'analyseur, cela prend que 4s, vide ou non.
Voici ma procédure :
CREATE PROCEDURE maj_intra2
AS
BEGIN
DECLARE @code_rh VARCHAR(8), @id INT
DECLARE cur CURSOR FOR
select top 50000 p.id_per, i.code_rh new from intra i, personne p where
i.code_rh not in (select a.code_rh from personne a where
a.code_rh=i.code_rh)
and i.code_rh is not null and i.nom=p.nom and i.prenom=p.prenom and
i.entite=p.entite
OPEN cur
FETCH cur INTO @id,@code_rh
WHILE @@fetch_Status = 0
BEGIN
UPDATE personne SET code_rh=@code_rh WHERE id_per=@id
IF @@ERROR <>0
BEGIN
print @code_rh
CLOSE cur
DEALLOCATE cur
RETURN
END
FETCH cur INTO @id, @code_rh
END
CLOSE cur
DEALLOCATE cur
END
GO
BS
"" a écrit :Essaye de mettre un compteur dans ta boucle pour voir ce
qui se passe...
>-----Message d'origine-----
>D'abord merci pour la reponse.
>
>J'utilise un FETCH cur INTO @...
>Je pense que c'est pareil mais j'utilise cette boucle
pour tous mes
>procedures meme lorsqu'elles ne contiennent pas de
requete avec jointure et
>cela marche tres bien. Je ne comprend pas comment je
pourrais avoir une
>boucle infini puisque ma selection est correct sous
l'analyseur de requete.
>
>BS
>
>
>
>"" a écrit :
>
>> Bonjour,
>>
>> As tu mis un "FETCH next" quelque part?
>>
>> Ce que tu décris est un boucle infini je pense :)
>>
>> A toute
>>
>> Portekoi
>>
>> >-----Message d'origine-----
>> >Bonjour
>> >
>> >Je travaille depuis quelques temps sur SQL Server 200
et
>> j'ai remarquÃf© des
>> >problÃf¨mes lorsque j'affecte Ãf un curseur une
selection
>> comportant une
>> >jointure.
>> >
>> >Lorsque je teste la requete de selection cela
fonctionne
>> trÃf¨s bien sous
>> >l'analyseur de requete mais cela bloque ma
procÃf©dure
>> chaque fois qu'elle est
>> >executÃf©e.
>> >
>> >Par contre lorsque je definis un top 100 ou plus dans
ma
>> procÃf©dure, elle
>> >fonctionne tres bien mÃfªme si la valeur du top est
>> supÃf©rieur au nombre de
>> >tuples selectionnÃf©s
>> >
>> >Je ne comprend pas.
>> >Quelqu'un pourait il m'expliquer ?
>> >
>> >Cordialement,
>> >BS
>> >
>> >.
>> >
>>
>.
>
Au vu de la procédure, j'aurais tendance à essayer soit un CURSOR FOR
UPDATE, soit un INSENSITIVE CURSOR.
Qu'est-ce que ça donne?
JN.
"coolben" a écrit dans le message de
news:
> Tout a l heure j'ai lancer une procedure qui fais appel a une selection
> par
> jointure. Cette selection est vide mais cela a pris 1minute aavtn que la
> procedure ne se termine. Dans ce cas la boucle n'est pas parcouru ce qui
> m'incite a penser que cele ne viens pas de la boucle. QUAnd je lance la
> requete avec l'analyseur, cela prend que 4s, vide ou non.
>
> Voici ma procédure :
>
> CREATE PROCEDURE maj_intra2
> AS
> BEGIN
> DECLARE @code_rh VARCHAR(8), @id INT
> DECLARE cur CURSOR FOR
> select top 50000 p.id_per, i.code_rh new from intra i, personne p where
> i.code_rh not in (select a.code_rh from personne a where
> a.code_rh=i.code_rh)
> and i.code_rh is not null and i.nom=p.nom and i.prenom=p.prenom and
> i.entite=p.entite
> OPEN cur
> FETCH cur INTO @id,@code_rh
> WHILE @@fetch_Status = 0
> BEGIN
> UPDATE personne SET code_rh=@code_rh WHERE id_per=@id
> IF @@ERROR <>0
> BEGIN
> print @code_rh
> CLOSE cur
> DEALLOCATE cur
> RETURN
> END
> FETCH cur INTO @id, @code_rh
> END
> CLOSE cur
> DEALLOCATE cur
> END
> GO
>
> BS
>
> "" a écrit :
>
>> Essaye de mettre un compteur dans ta boucle pour voir ce
>> qui se passe...
>> >-----Message d'origine-----
>> >D'abord merci pour la reponse.
>> >
>> >J'utilise un FETCH cur INTO @...
>> >Je pense que c'est pareil mais j'utilise cette boucle
>> pour tous mes
>> >procedures meme lorsqu'elles ne contiennent pas de
>> requete avec jointure et
>> >cela marche tres bien. Je ne comprend pas comment je
>> pourrais avoir une
>> >boucle infini puisque ma selection est correct sous
>> l'analyseur de requete.
>> >
>> >BS
>> >
>> >
>> >
>> >"" a écrit :
>> >
>> >> Bonjour,
>> >>
>> >> As tu mis un "FETCH next" quelque part?
>> >>
>> >> Ce que tu décris est un boucle infini je pense :)
>> >>
>> >> A toute
>> >>
>> >> Portekoi
>> >>
>> >> >-----Message d'origine-----
>> >> >Bonjour
>> >> >
>> >> >Je travaille depuis quelques temps sur SQL Server 200
>> et
>> >> j'ai remarquÃf© des
>> >> >problÃf¨mes lorsque j'affecte Ãf un curseur une
>> selection
>> >> comportant une
>> >> >jointure.
>> >> >
>> >> >Lorsque je teste la requete de selection cela
>> fonctionne
>> >> trÃf¨s bien sous
>> >> >l'analyseur de requete mais cela bloque ma
>> procÃf©dure
>> >> chaque fois qu'elle est
>> >> >executÃf©e.
>> >> >
>> >> >Par contre lorsque je definis un top 100 ou plus dans
>> ma
>> >> procÃf©dure, elle
>> >> >fonctionne tres bien mÃfªme si la valeur du top est
>> >> supÃf©rieur au nombre de
>> >> >tuples selectionnÃf©s
>> >> >
>> >> >Je ne comprend pas.
>> >> >Quelqu'un pourait il m'expliquer ?
>> >> >
>> >> >Cordialement,
>> >> >BS
>> >> >
>> >> >.
>> >> >
>> >>
>> >.
>> >
>>
Au vu de la procédure, j'aurais tendance à essayer soit un CURSOR FOR
UPDATE, soit un INSENSITIVE CURSOR.
Qu'est-ce que ça donne?
JN.
"coolben" <coolben@discussions.microsoft.com> a écrit dans le message de
news: 599B31CD-78D1-47D2-9F28-DA3F8F65F49B@microsoft.com...
> Tout a l heure j'ai lancer une procedure qui fais appel a une selection
> par
> jointure. Cette selection est vide mais cela a pris 1minute aavtn que la
> procedure ne se termine. Dans ce cas la boucle n'est pas parcouru ce qui
> m'incite a penser que cele ne viens pas de la boucle. QUAnd je lance la
> requete avec l'analyseur, cela prend que 4s, vide ou non.
>
> Voici ma procédure :
>
> CREATE PROCEDURE maj_intra2
> AS
> BEGIN
> DECLARE @code_rh VARCHAR(8), @id INT
> DECLARE cur CURSOR FOR
> select top 50000 p.id_per, i.code_rh new from intra i, personne p where
> i.code_rh not in (select a.code_rh from personne a where
> a.code_rh=i.code_rh)
> and i.code_rh is not null and i.nom=p.nom and i.prenom=p.prenom and
> i.entite=p.entite
> OPEN cur
> FETCH cur INTO @id,@code_rh
> WHILE @@fetch_Status = 0
> BEGIN
> UPDATE personne SET code_rh=@code_rh WHERE id_per=@id
> IF @@ERROR <>0
> BEGIN
> print @code_rh
> CLOSE cur
> DEALLOCATE cur
> RETURN
> END
> FETCH cur INTO @id, @code_rh
> END
> CLOSE cur
> DEALLOCATE cur
> END
> GO
>
> BS
>
> "anonymous@discussions.microsoft.com" a écrit :
>
>> Essaye de mettre un compteur dans ta boucle pour voir ce
>> qui se passe...
>> >-----Message d'origine-----
>> >D'abord merci pour la reponse.
>> >
>> >J'utilise un FETCH cur INTO @...
>> >Je pense que c'est pareil mais j'utilise cette boucle
>> pour tous mes
>> >procedures meme lorsqu'elles ne contiennent pas de
>> requete avec jointure et
>> >cela marche tres bien. Je ne comprend pas comment je
>> pourrais avoir une
>> >boucle infini puisque ma selection est correct sous
>> l'analyseur de requete.
>> >
>> >BS
>> >
>> >
>> >
>> >"anonymous@discussions.microsoft.com" a écrit :
>> >
>> >> Bonjour,
>> >>
>> >> As tu mis un "FETCH next" quelque part?
>> >>
>> >> Ce que tu décris est un boucle infini je pense :)
>> >>
>> >> A toute
>> >>
>> >> Portekoi
>> >>
>> >> >-----Message d'origine-----
>> >> >Bonjour
>> >> >
>> >> >Je travaille depuis quelques temps sur SQL Server 200
>> et
>> >> j'ai remarquÃf© des
>> >> >problÃf¨mes lorsque j'affecte Ãf un curseur une
>> selection
>> >> comportant une
>> >> >jointure.
>> >> >
>> >> >Lorsque je teste la requete de selection cela
>> fonctionne
>> >> trÃf¨s bien sous
>> >> >l'analyseur de requete mais cela bloque ma
>> procÃf©dure
>> >> chaque fois qu'elle est
>> >> >executÃf©e.
>> >> >
>> >> >Par contre lorsque je definis un top 100 ou plus dans
>> ma
>> >> procÃf©dure, elle
>> >> >fonctionne tres bien mÃfªme si la valeur du top est
>> >> supÃf©rieur au nombre de
>> >> >tuples selectionnÃf©s
>> >> >
>> >> >Je ne comprend pas.
>> >> >Quelqu'un pourait il m'expliquer ?
>> >> >
>> >> >Cordialement,
>> >> >BS
>> >> >
>> >> >.
>> >> >
>> >>
>> >.
>> >
>>
Au vu de la procédure, j'aurais tendance à essayer soit un CURSOR FOR
UPDATE, soit un INSENSITIVE CURSOR.
Qu'est-ce que ça donne?
JN.
"coolben" a écrit dans le message de
news:
> Tout a l heure j'ai lancer une procedure qui fais appel a une selection
> par
> jointure. Cette selection est vide mais cela a pris 1minute aavtn que la
> procedure ne se termine. Dans ce cas la boucle n'est pas parcouru ce qui
> m'incite a penser que cele ne viens pas de la boucle. QUAnd je lance la
> requete avec l'analyseur, cela prend que 4s, vide ou non.
>
> Voici ma procédure :
>
> CREATE PROCEDURE maj_intra2
> AS
> BEGIN
> DECLARE @code_rh VARCHAR(8), @id INT
> DECLARE cur CURSOR FOR
> select top 50000 p.id_per, i.code_rh new from intra i, personne p where
> i.code_rh not in (select a.code_rh from personne a where
> a.code_rh=i.code_rh)
> and i.code_rh is not null and i.nom=p.nom and i.prenom=p.prenom and
> i.entite=p.entite
> OPEN cur
> FETCH cur INTO @id,@code_rh
> WHILE @@fetch_Status = 0
> BEGIN
> UPDATE personne SET code_rh=@code_rh WHERE id_per=@id
> IF @@ERROR <>0
> BEGIN
> print @code_rh
> CLOSE cur
> DEALLOCATE cur
> RETURN
> END
> FETCH cur INTO @id, @code_rh
> END
> CLOSE cur
> DEALLOCATE cur
> END
> GO
>
> BS
>
> "" a écrit :
>
>> Essaye de mettre un compteur dans ta boucle pour voir ce
>> qui se passe...
>> >-----Message d'origine-----
>> >D'abord merci pour la reponse.
>> >
>> >J'utilise un FETCH cur INTO @...
>> >Je pense que c'est pareil mais j'utilise cette boucle
>> pour tous mes
>> >procedures meme lorsqu'elles ne contiennent pas de
>> requete avec jointure et
>> >cela marche tres bien. Je ne comprend pas comment je
>> pourrais avoir une
>> >boucle infini puisque ma selection est correct sous
>> l'analyseur de requete.
>> >
>> >BS
>> >
>> >
>> >
>> >"" a écrit :
>> >
>> >> Bonjour,
>> >>
>> >> As tu mis un "FETCH next" quelque part?
>> >>
>> >> Ce que tu décris est un boucle infini je pense :)
>> >>
>> >> A toute
>> >>
>> >> Portekoi
>> >>
>> >> >-----Message d'origine-----
>> >> >Bonjour
>> >> >
>> >> >Je travaille depuis quelques temps sur SQL Server 200
>> et
>> >> j'ai remarquÃf© des
>> >> >problÃf¨mes lorsque j'affecte Ãf un curseur une
>> selection
>> >> comportant une
>> >> >jointure.
>> >> >
>> >> >Lorsque je teste la requete de selection cela
>> fonctionne
>> >> trÃf¨s bien sous
>> >> >l'analyseur de requete mais cela bloque ma
>> procÃf©dure
>> >> chaque fois qu'elle est
>> >> >executÃf©e.
>> >> >
>> >> >Par contre lorsque je definis un top 100 ou plus dans
>> ma
>> >> procÃf©dure, elle
>> >> >fonctionne tres bien mÃfªme si la valeur du top est
>> >> supÃf©rieur au nombre de
>> >> >tuples selectionnÃf©s
>> >> >
>> >> >Je ne comprend pas.
>> >> >Quelqu'un pourait il m'expliquer ?
>> >> >
>> >> >Cordialement,
>> >> >BS
>> >> >
>> >> >.
>> >> >
>> >>
>> >.
>> >
>>
Bonjour,
Votre requete source devrait être écrite comme suit :
SELECT TOP 50000 p.id_per, i.code_rh new
FROM intra i
INNER JOIN personne p ON i.nom=p.nom AND i.prenom=p.prenom AND
i.entite=p.entite
WHERE i.code_rh is not null
AND i.code_rh NOT IN (SELECT code_rh FROM personne )
----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France
"Jean-Nicolas BERGER" wrote in
message news:#
> Au vu de la procédure, j'aurais tendance à essayer soit un CURSOR FOR
> UPDATE, soit un INSENSITIVE CURSOR.
> Qu'est-ce que ça donne?
> JN.
>
>
> "coolben" a écrit dans le message de
> news:
> > Tout a l heure j'ai lancer une procedure qui fais appel a une selection
> > par
> > jointure. Cette selection est vide mais cela a pris 1minute aavtn que la
> > procedure ne se termine. Dans ce cas la boucle n'est pas parcouru ce qui
> > m'incite a penser que cele ne viens pas de la boucle. QUAnd je lance la
> > requete avec l'analyseur, cela prend que 4s, vide ou non.
> >
> > Voici ma procédure :
> >
> > CREATE PROCEDURE maj_intra2
> > AS
> > BEGIN
> > DECLARE @code_rh VARCHAR(8), @id INT
> > DECLARE cur CURSOR FOR
> > select top 50000 p.id_per, i.code_rh new from intra i, personne p where
> > i.code_rh not in (select a.code_rh from personne a where
> > a.code_rh=i.code_rh)
> > and i.code_rh is not null and i.nom=p.nom and i.prenom=p.prenom and
> > i.entite=p.entite
> > OPEN cur
> > FETCH cur INTO @id,@code_rh
> > WHILE @@fetch_Status = 0
> > BEGIN
> > UPDATE personne SET code_rh=@code_rh WHERE id_per=@id
> > IF @@ERROR <>0
> > BEGIN
> > print @code_rh
> > CLOSE cur
> > DEALLOCATE cur
> > RETURN
> > END
> > FETCH cur INTO @id, @code_rh
> > END
> > CLOSE cur
> > DEALLOCATE cur
> > END
> > GO
> >
> > BS
> >
> > "" a écrit :
> >
> >> Essaye de mettre un compteur dans ta boucle pour voir ce
> >> qui se passe...
> >> >-----Message d'origine-----
> >> >D'abord merci pour la reponse.
> >> >
> >> >J'utilise un FETCH cur INTO @...
> >> >Je pense que c'est pareil mais j'utilise cette boucle
> >> pour tous mes
> >> >procedures meme lorsqu'elles ne contiennent pas de
> >> requete avec jointure et
> >> >cela marche tres bien. Je ne comprend pas comment je
> >> pourrais avoir une
> >> >boucle infini puisque ma selection est correct sous
> >> l'analyseur de requete.
> >> >
> >> >BS
> >> >
> >> >
> >> >
> >> >"" a écrit :
> >> >
> >> >> Bonjour,
> >> >>
> >> >> As tu mis un "FETCH next" quelque part?
> >> >>
> >> >> Ce que tu décris est un boucle infini je pense :)
> >> >>
> >> >> A toute
> >> >>
> >> >> Portekoi
> >> >>
> >> >> >-----Message d'origine-----
> >> >> >Bonjour
> >> >> >
> >> >> >Je travaille depuis quelques temps sur SQL Server 200
> >> et
> >> >> j'ai remarquÃf© des
> >> >> >problÃf¨mes lorsque j'affecte Ãf un curseur une
> >> selection
> >> >> comportant une
> >> >> >jointure.
> >> >> >
> >> >> >Lorsque je teste la requete de selection cela
> >> fonctionne
> >> >> trÃf¨s bien sous
> >> >> >l'analyseur de requete mais cela bloque ma
> >> procÃf©dure
> >> >> chaque fois qu'elle est
> >> >> >executÃf©e.
> >> >> >
> >> >> >Par contre lorsque je definis un top 100 ou plus dans
> >> ma
> >> >> procÃf©dure, elle
> >> >> >fonctionne tres bien mÃfªme si la valeur du top est
> >> >> supÃf©rieur au nombre de
> >> >> >tuples selectionnÃf©s
> >> >> >
> >> >> >Je ne comprend pas.
> >> >> >Quelqu'un pourait il m'expliquer ?
> >> >> >
> >> >> >Cordialement,
> >> >> >BS
> >> >> >
> >> >> >.
> >> >> >
> >> >>
> >> >.
> >> >
> >>
>
>
Bonjour,
Votre requete source devrait être écrite comme suit :
SELECT TOP 50000 p.id_per, i.code_rh new
FROM intra i
INNER JOIN personne p ON i.nom=p.nom AND i.prenom=p.prenom AND
i.entite=p.entite
WHERE i.code_rh is not null
AND i.code_rh NOT IN (SELECT code_rh FROM personne )
----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France
"Jean-Nicolas BERGER" <j-n.enlevezmoi.berger@club-internet.fr> wrote in
message news:#UYvqGCLFHA.2492@TK2MSFTNGP14.phx.gbl...
> Au vu de la procédure, j'aurais tendance à essayer soit un CURSOR FOR
> UPDATE, soit un INSENSITIVE CURSOR.
> Qu'est-ce que ça donne?
> JN.
>
>
> "coolben" <coolben@discussions.microsoft.com> a écrit dans le message de
> news: 599B31CD-78D1-47D2-9F28-DA3F8F65F49B@microsoft.com...
> > Tout a l heure j'ai lancer une procedure qui fais appel a une selection
> > par
> > jointure. Cette selection est vide mais cela a pris 1minute aavtn que la
> > procedure ne se termine. Dans ce cas la boucle n'est pas parcouru ce qui
> > m'incite a penser que cele ne viens pas de la boucle. QUAnd je lance la
> > requete avec l'analyseur, cela prend que 4s, vide ou non.
> >
> > Voici ma procédure :
> >
> > CREATE PROCEDURE maj_intra2
> > AS
> > BEGIN
> > DECLARE @code_rh VARCHAR(8), @id INT
> > DECLARE cur CURSOR FOR
> > select top 50000 p.id_per, i.code_rh new from intra i, personne p where
> > i.code_rh not in (select a.code_rh from personne a where
> > a.code_rh=i.code_rh)
> > and i.code_rh is not null and i.nom=p.nom and i.prenom=p.prenom and
> > i.entite=p.entite
> > OPEN cur
> > FETCH cur INTO @id,@code_rh
> > WHILE @@fetch_Status = 0
> > BEGIN
> > UPDATE personne SET code_rh=@code_rh WHERE id_per=@id
> > IF @@ERROR <>0
> > BEGIN
> > print @code_rh
> > CLOSE cur
> > DEALLOCATE cur
> > RETURN
> > END
> > FETCH cur INTO @id, @code_rh
> > END
> > CLOSE cur
> > DEALLOCATE cur
> > END
> > GO
> >
> > BS
> >
> > "anonymous@discussions.microsoft.com" a écrit :
> >
> >> Essaye de mettre un compteur dans ta boucle pour voir ce
> >> qui se passe...
> >> >-----Message d'origine-----
> >> >D'abord merci pour la reponse.
> >> >
> >> >J'utilise un FETCH cur INTO @...
> >> >Je pense que c'est pareil mais j'utilise cette boucle
> >> pour tous mes
> >> >procedures meme lorsqu'elles ne contiennent pas de
> >> requete avec jointure et
> >> >cela marche tres bien. Je ne comprend pas comment je
> >> pourrais avoir une
> >> >boucle infini puisque ma selection est correct sous
> >> l'analyseur de requete.
> >> >
> >> >BS
> >> >
> >> >
> >> >
> >> >"anonymous@discussions.microsoft.com" a écrit :
> >> >
> >> >> Bonjour,
> >> >>
> >> >> As tu mis un "FETCH next" quelque part?
> >> >>
> >> >> Ce que tu décris est un boucle infini je pense :)
> >> >>
> >> >> A toute
> >> >>
> >> >> Portekoi
> >> >>
> >> >> >-----Message d'origine-----
> >> >> >Bonjour
> >> >> >
> >> >> >Je travaille depuis quelques temps sur SQL Server 200
> >> et
> >> >> j'ai remarquÃf© des
> >> >> >problÃf¨mes lorsque j'affecte Ãf un curseur une
> >> selection
> >> >> comportant une
> >> >> >jointure.
> >> >> >
> >> >> >Lorsque je teste la requete de selection cela
> >> fonctionne
> >> >> trÃf¨s bien sous
> >> >> >l'analyseur de requete mais cela bloque ma
> >> procÃf©dure
> >> >> chaque fois qu'elle est
> >> >> >executÃf©e.
> >> >> >
> >> >> >Par contre lorsque je definis un top 100 ou plus dans
> >> ma
> >> >> procÃf©dure, elle
> >> >> >fonctionne tres bien mÃfªme si la valeur du top est
> >> >> supÃf©rieur au nombre de
> >> >> >tuples selectionnÃf©s
> >> >> >
> >> >> >Je ne comprend pas.
> >> >> >Quelqu'un pourait il m'expliquer ?
> >> >> >
> >> >> >Cordialement,
> >> >> >BS
> >> >> >
> >> >> >.
> >> >> >
> >> >>
> >> >.
> >> >
> >>
>
>
Bonjour,
Votre requete source devrait être écrite comme suit :
SELECT TOP 50000 p.id_per, i.code_rh new
FROM intra i
INNER JOIN personne p ON i.nom=p.nom AND i.prenom=p.prenom AND
i.entite=p.entite
WHERE i.code_rh is not null
AND i.code_rh NOT IN (SELECT code_rh FROM personne )
----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France
"Jean-Nicolas BERGER" wrote in
message news:#
> Au vu de la procédure, j'aurais tendance à essayer soit un CURSOR FOR
> UPDATE, soit un INSENSITIVE CURSOR.
> Qu'est-ce que ça donne?
> JN.
>
>
> "coolben" a écrit dans le message de
> news:
> > Tout a l heure j'ai lancer une procedure qui fais appel a une selection
> > par
> > jointure. Cette selection est vide mais cela a pris 1minute aavtn que la
> > procedure ne se termine. Dans ce cas la boucle n'est pas parcouru ce qui
> > m'incite a penser que cele ne viens pas de la boucle. QUAnd je lance la
> > requete avec l'analyseur, cela prend que 4s, vide ou non.
> >
> > Voici ma procédure :
> >
> > CREATE PROCEDURE maj_intra2
> > AS
> > BEGIN
> > DECLARE @code_rh VARCHAR(8), @id INT
> > DECLARE cur CURSOR FOR
> > select top 50000 p.id_per, i.code_rh new from intra i, personne p where
> > i.code_rh not in (select a.code_rh from personne a where
> > a.code_rh=i.code_rh)
> > and i.code_rh is not null and i.nom=p.nom and i.prenom=p.prenom and
> > i.entite=p.entite
> > OPEN cur
> > FETCH cur INTO @id,@code_rh
> > WHILE @@fetch_Status = 0
> > BEGIN
> > UPDATE personne SET code_rh=@code_rh WHERE id_per=@id
> > IF @@ERROR <>0
> > BEGIN
> > print @code_rh
> > CLOSE cur
> > DEALLOCATE cur
> > RETURN
> > END
> > FETCH cur INTO @id, @code_rh
> > END
> > CLOSE cur
> > DEALLOCATE cur
> > END
> > GO
> >
> > BS
> >
> > "" a écrit :
> >
> >> Essaye de mettre un compteur dans ta boucle pour voir ce
> >> qui se passe...
> >> >-----Message d'origine-----
> >> >D'abord merci pour la reponse.
> >> >
> >> >J'utilise un FETCH cur INTO @...
> >> >Je pense que c'est pareil mais j'utilise cette boucle
> >> pour tous mes
> >> >procedures meme lorsqu'elles ne contiennent pas de
> >> requete avec jointure et
> >> >cela marche tres bien. Je ne comprend pas comment je
> >> pourrais avoir une
> >> >boucle infini puisque ma selection est correct sous
> >> l'analyseur de requete.
> >> >
> >> >BS
> >> >
> >> >
> >> >
> >> >"" a écrit :
> >> >
> >> >> Bonjour,
> >> >>
> >> >> As tu mis un "FETCH next" quelque part?
> >> >>
> >> >> Ce que tu décris est un boucle infini je pense :)
> >> >>
> >> >> A toute
> >> >>
> >> >> Portekoi
> >> >>
> >> >> >-----Message d'origine-----
> >> >> >Bonjour
> >> >> >
> >> >> >Je travaille depuis quelques temps sur SQL Server 200
> >> et
> >> >> j'ai remarquÃf© des
> >> >> >problÃf¨mes lorsque j'affecte Ãf un curseur une
> >> selection
> >> >> comportant une
> >> >> >jointure.
> >> >> >
> >> >> >Lorsque je teste la requete de selection cela
> >> fonctionne
> >> >> trÃf¨s bien sous
> >> >> >l'analyseur de requete mais cela bloque ma
> >> procÃf©dure
> >> >> chaque fois qu'elle est
> >> >> >executÃf©e.
> >> >> >
> >> >> >Par contre lorsque je definis un top 100 ou plus dans
> >> ma
> >> >> procÃf©dure, elle
> >> >> >fonctionne tres bien mÃfªme si la valeur du top est
> >> >> supÃf©rieur au nombre de
> >> >> >tuples selectionnÃf©s
> >> >> >
> >> >> >Je ne comprend pas.
> >> >> >Quelqu'un pourait il m'expliquer ?
> >> >> >
> >> >> >Cordialement,
> >> >> >BS
> >> >> >
> >> >> >.
> >> >> >
> >> >>
> >> >.
> >> >
> >>
>
>