T-SQL > FETCH - Problem mit Schleife

bibi66

Grünschnabel
Hi Forum

ich erstelle eine Tabelle die mir das Startdatum von Prod.-Aufträgen liefern soll.
Das Enddatum und die Durchlaufzeit sind bekannt und in einer Tab erfasst.
In einer Kalendertabelle sind jeweils Datum und Arbeitstage erfasst. 1= Arbeitstag, 2=kein Arbeitstag.
Bei folgendem Code rechnet der Cursor bis er auf einen freien Tag kommt.
Wo liegt der Hund begraben ?
System: mssql 2005
Danke für die Hilfe
Bibi

Code:
BEGIN

	SET @BERECH_ID = @BERECH_ID + 1 -- setzt BERECH_ID auf aktuellen DS

	SET @ZTotal = (SELECT ZTotal -- holt Anzahl Arbeitstage
        FROM dbo.Temp_BERECHNUNG
	WHERE BERECH_ID = @BERECH_ID)

	DECLARE CurProdstart CURSOR LOCAL KEYSET
	FOR
		SELECT Kal_Datum, AT -- AT: 1 Arbeitstag, 2 kein Arbeitstag
		FROM dbo.Temp_KALENDER
		FOR UPDATE

	OPEN CurProdstart

	DECLARE @Kal_Datum SMALLDATETIME, @AT INT

		FETCH LAST FROM CurProdstart INTO @Kal_Datum, @AT   -- letzter DS in dbo.Temp_KALENDER

	WHILE @ZTotal >= 1
	BEGIN
	WHILE @AT = 2 -- 2 kein Arbeitstag
		BEGIN
		FETCH PRIOR FROM CurProdstart INTO @Kal_Datum, @AT  -- solang AT = 2 >1 Tag zurück
		END
		FETCH PRIOR FROM CurProdstart INTO @Kal_Datum, @AT
		SET @ZTotal = @ZTotal -1  -- sonst Arbeitstage -1
	END
END
 
Zurück