OVH Cloud OVH Cloud

Problème Cursor

2 réponses
Avatar
Loïc Kuhn
Bonjour à tous,

J'ai un petit problème avec la procédure utilisant un cursor ci-dessous, en
effet, lors du test isolé de la requête : Rq_PrixArt_MajPrixArticle
AR_Type, AR_Article, @NoHA, celle-ci s'exécute bien correctement, par
contre, lors de l'exécution au sein de la procédure, les articles sont bien
parcourus mais aucune mise à jour n'est effectuée.

Etant donné que je ne suis pas sûr de la syntaxe exact de ma procédure et
surtout de mes cursors j'aimerais savoir si vous arrivez à me dire l'erreur
que je commets.

Aucun message d'erreur
Résultat : mise à jour non effectuée.

CREATE PROCEDURE [dbo].[Rq_PrixArt_MajPrixToutArticle] AS
DECLARE vCur CURSOR FOR
SELECT AR_Type, AR_Code FROM dbo.Tb_Articles WHERE (AR_MajPrix = 1)
OPEN vCur
FETCH NEXT FROM vCur
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC Rq_PrixArt_MajPrixArticle AR_Type, AR_Article, @NoHA
FETCH NEXT FROM vCur
END
CLOSE vCur
DEALLOCATE vCur
END
GO

Merci d'avance
Loïc

2 réponses

Avatar
Med Bouchenafa[MVP]
Je ne sais d'où sort la variable @NoHA
Par contre, pour le reste, cela fonctionnerait certainement mieux si tu
récupérais le contenu de ton curseur dans deux variables qu'il faut déclarer
au préalable

CREATE PROCEDURE [dbo].[Rq_PrixArt_MajPrixToutArticle] AS
BEGIN
DECLATE @AR_Type ....
DECLARE @AR_Article ...
DECLARE @NoHA

SET @NoHA ..... Ne pas oublier de renseigner cette variable !!!

DECLARE vCur CURSOR FOR
SELECT AR_Type, AR_Code FROM dbo.Tb_Articles WHERE (AR_MajPrix = 1)
OPEN vCur
FETCH NEXT FROM vCur INTO @AR_Type, @AR_Article
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC Rq_PrixArt_MajPrixArticle @AR_Type, @AR_Article, @NoHA
FETCH NEXT FROM vCur INTO @AR_Type, @AR_Article
END
CLOSE vCur
DEALLOCATE vCur
END
END

--
Bien cordialement
Med Bouchenafa
TETRASET
75015 Paris
"Loïc Kuhn" wrote in message
news:3fb9d6e6$
Bonjour à tous,

J'ai un petit problème avec la procédure utilisant un cursor ci-dessous,


en
effet, lors du test isolé de la requête : Rq_PrixArt_MajPrixArticle
AR_Type, AR_Article, @NoHA, celle-ci s'exécute bien correctement, par
contre, lors de l'exécution au sein de la procédure, les articles sont


bien
parcourus mais aucune mise à jour n'est effectuée.

Etant donné que je ne suis pas sûr de la syntaxe exact de ma procédure et
surtout de mes cursors j'aimerais savoir si vous arrivez à me dire


l'erreur
que je commets.

Aucun message d'erreur
Résultat : mise à jour non effectuée.

CREATE PROCEDURE [dbo].[Rq_PrixArt_MajPrixToutArticle] AS
DECLARE vCur CURSOR FOR
SELECT AR_Type, AR_Code FROM dbo.Tb_Articles WHERE (AR_MajPrix = 1)
OPEN vCur
FETCH NEXT FROM vCur
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC Rq_PrixArt_MajPrixArticle AR_Type, AR_Article, @NoHA
FETCH NEXT FROM vCur
END
CLOSE vCur
DEALLOCATE vCur
END
GO

Merci d'avance
Loïc






Avatar
Loïc Kuhn
Merci beaucoup, cela fonctionne.

A bientôt pour de nouvelles aventures.
Loïc

"Med Bouchenafa[MVP]" a écrit dans le message de
news:
Je ne sais d'où sort la variable @NoHA
Par contre, pour le reste, cela fonctionnerait certainement mieux si tu
récupérais le contenu de ton curseur dans deux variables qu'il faut


déclarer
au préalable

CREATE PROCEDURE [dbo].[Rq_PrixArt_MajPrixToutArticle] AS
BEGIN
DECLATE @AR_Type ....
DECLARE @AR_Article ...
DECLARE @NoHA

SET @NoHA ..... Ne pas oublier de renseigner cette variable !!!

DECLARE vCur CURSOR FOR
SELECT AR_Type, AR_Code FROM dbo.Tb_Articles WHERE (AR_MajPrix = 1)
OPEN vCur
FETCH NEXT FROM vCur INTO @AR_Type, @AR_Article
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC Rq_PrixArt_MajPrixArticle @AR_Type, @AR_Article, @NoHA
FETCH NEXT FROM vCur INTO @AR_Type, @AR_Article
END
CLOSE vCur
DEALLOCATE vCur
END
END

--
Bien cordialement
Med Bouchenafa
TETRASET
75015 Paris
"Loïc Kuhn" wrote in message
news:3fb9d6e6$
> Bonjour à tous,
>
> J'ai un petit problème avec la procédure utilisant un cursor ci-dessous,
en
> effet, lors du test isolé de la requête : Rq_PrixArt_MajPrixArticle
> AR_Type, AR_Article, @NoHA, celle-ci s'exécute bien correctement, par
> contre, lors de l'exécution au sein de la procédure, les articles sont
bien
> parcourus mais aucune mise à jour n'est effectuée.
>
> Etant donné que je ne suis pas sûr de la syntaxe exact de ma procédure


et
> surtout de mes cursors j'aimerais savoir si vous arrivez à me dire
l'erreur
> que je commets.
>
> Aucun message d'erreur
> Résultat : mise à jour non effectuée.
>
> CREATE PROCEDURE [dbo].[Rq_PrixArt_MajPrixToutArticle] AS
> DECLARE vCur CURSOR FOR
> SELECT AR_Type, AR_Code FROM dbo.Tb_Articles WHERE (AR_MajPrix = 1)
> OPEN vCur
> FETCH NEXT FROM vCur
> WHILE @@FETCH_STATUS = 0
> BEGIN
> EXEC Rq_PrixArt_MajPrixArticle AR_Type, AR_Article, @NoHA
> FETCH NEXT FROM vCur
> END
> CLOSE vCur
> DEALLOCATE vCur
> END
> GO
>
> Merci d'avance
> Loïc
>
>
>
>