Hallo,
ich finde den Fehler im folgenden Code nicht. Wenn fachG01 = 1 ist, dann wird mir auch richtig fach2 ausgegeben, wenn aber fachG01 = 3 ist, wird für fach1 und fach2 NULL ausgegeben, warum?
Es wird aber nachdem herausgefunden wurde, dass fach 2 belegt ist, richtig als nächste Möglichkeit fachG01 = 3 angegeben.
ich finde den Fehler im folgenden Code nicht. Wenn fachG01 = 1 ist, dann wird mir auch richtig fach2 ausgegeben, wenn aber fachG01 = 3 ist, wird für fach1 und fach2 NULL ausgegeben, warum?
Es wird aber nachdem herausgefunden wurde, dass fach 2 belegt ist, richtig als nächste Möglichkeit fachG01 = 3 angegeben.
Code:
CREATE PROCEDURE boxG0
@reihe CHAR(1) OUTPUT
, @spalte CHAR(1) OUTPUT
, @ebene CHAR(1) OUTPUT
, @fach1 CHAR(1) OUTPUT
, @fach2 CHAR(1) OUTPUT
AS
BEGIN
DECLARE @reiheG0 CHAR(1), @spalteG0 CHAR(1), @ebeneG0 CHAR(1), @fachG01 CHAR(1)
DECLARE c_G0 CURSOR FOR
SELECT reihe, spalte, ebene, fach FROM la_platz WHERE mgl_g0 = '1' AND belegt = '0' AND reserv = '0'
OPEN c_G0
FETCH c_G0 INTO @reiheG0, @spalteG0, @ebeneG0, @fachG01
IF(@fachG01 = '1')
BEGIN
DECLARE @belegt1 BIT, @reserviert1 BIT
DECLARE c_G0fach2_1 CURSOR FOR
SELECT belegt, reserv FROM la_platz WHERE reihe = @reiheG0 AND spalte = @spalteG0 AND ebene = @ebeneG0 AND fach = '2'
OPEN c_G0fach2_1
FETCH c_G0fach2_1 INTO @belegt1, @reserviert1
IF(@belegt1 = '0' AND @reserviert1 = '0')
BEGIN
SET @fach1 = '1'
SET @fach2 = '2'
END
ELSE
FETCH NEXT FROM c_G0
CLOSE c_G0fach2_1
DEALLOCATE c_G0fach2_1
END
IF(@fachG01 = '3')
BEGIN
DECLARE @belegt3 BIT, @reserviert3 BIT
DECLARE c_G0fach2_3 CURSOR FOR
SELECT belegt, reserv FROM la_platz WHERE reihe = @reiheG0 AND spalte = @spalteG0 AND ebene = @ebeneG0 AND fach = '4'
OPEN c_G0fach2_3
FETCH c_G0fach2_3 INTO @belegt3, @reserviert3
IF(@belegt3 = '0' AND @reserviert3 = '0')
BEGIN
SET @fach1 = '3'
SET @fach2 = '4'
END
ELSE
FETCH NEXT FROM c_G0
CLOSE c_G0fach2_3
DEALLOCATE c_G0fach2_3
END
SET @reihe = @reiheG0;
SET @spalte = @spalteG0;
SET @ebene = @ebeneG0;
CLOSE c_G0
DEALLOCATE c_G0
END
GO
DECLARE @reiheG0 CHAR(1), @spalteG0 CHAR(1), @ebeneG0 CHAR(1), @fachG01 CHAR(1), @fachG02 CHAR(1)
EXECUTE boxG0 @reiheG0 OUTPUT, @spalteG0 OUTPUT, @ebeneG0 OUTPUT, @fachG01 OUTPUT, @fachG02 OUTPUT
SELECT @reiheG0, @spalteG0, @ebeneG0, @fachG01, @fachG02