Bonjour à tous,
Je galère depuis un moment sur un curseur d'update SQL SERVER 2012 et je sollicite votre aide tant mon client s'impatiente .
Dans une table je dois mettre à jour une colonne à partir d'une valeur issue d'une procédure stockée appelée [TTACalculationView].
Je passe en paramètre à cette fonction deux valeurs une date de début et une date de fin et me retourne en résultat une durée @ResultDuree.
Les autres valeurs PBAxxxxx sont ma clé primaire multiple.

Le code ci -dessous provoque une boucle infinie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
USE [SANDBOX]
GO
/****** Object:  StoredProcedure [UpdateColumnCalculLeadTime]    Script Date: 07/02/2019 09:25:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [UpdateColumnCalculLeadTime]
	-- Add the parameters for the stored procedure here
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
       SET NOCOUNT ON;
 
       -- Define variables
       DECLARE @DateDebut [datetime2](0), 
               @DateFin [datetime2](0),
               @ResultDuree float,
			   @PBA_TASKHIST_NotificationNumber_ bigint, -- Clés primaires @PBA_TASKHIST_NotificationNumber_ + @PBA_TASKHIST_TaskCode_ + @PBA_TASKHIST_SeqTaskNumber_
			   @PBA_TASKHIST_TaskCode_ varchar(4), 
			   @PBA_TASKHIST_SeqTaskNumber_ smallint
 
     DECLARE DATE_CURSOR CURSOR 
       --LOCAL STATIC READ_ONLY FORWARD_ONLY
       FOR 
       SELECT [PBA_TASKHIST_NotificationNumber], [PBA_TASKHIST_TaskCode], [PBA_TASKHIST_SeqTaskNumber], [PBA_TASKHIST_BeginningDate], [O_DQN_CREATED_DATE], [calcDurationTask] FROM [TTACalculationView] FOR UPDATE OF  [calcDurationTask] 
 
       OPEN DATE_CURSOR
       FETCH NEXT FROM DATE_CURSOR INTO @PBA_TASKHIST_NotificationNumber_, @PBA_TASKHIST_TaskCode_, @PBA_TASKHIST_SeqTaskNumber_, @DateDebut, @DateFin, @ResultDuree
 
	   WHILE @@FETCH_STATUS = 0
	       BEGIN 
		   EXEC [EssaiCreation] @DateDebut, @DateFin, @ResultDuree OUTPUT
 
		   UPDATE [TTACalculationView] SET [calcDurationTask] = @ResultDuree WHERE CURRENT OF DATE_CURSOR
		   --WHERE [PBA_TASKHIST_NotificationNumber]=@PBA_TASKHIST_NotificationNumber_ AND [PBA_TASKHIST_TaskCode]=@PBA_TASKHIST_TaskCode_ AND [PBA_TASKHIST_SeqTaskNumber]=@PBA_TASKHIST_SeqTaskNumber_
 
		   -- Next table 
		   FETCH NEXT FROM DATE_CURSOR INTO @PBA_TASKHIST_NotificationNumber_, @PBA_TASKHIST_TaskCode_, @PBA_TASKHIST_SeqTaskNumber_, @DateDebut, @DateFin, @ResultDuree
		   --FETCH NEXT FROM DATE_CURSOR INTO [TTACalculationView]
       END
 
       CLOSE DATE_CURSOR
       DEALLOCATE DATE_CURSOR
 
END