Stored Procedure - Cursor

Status
Nicht offen für weitere Antworten.

cam

Bekanntes Mitglied
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.


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
 

cam

Bekanntes Mitglied
Also den Fehler habe ich inzwischen gefunden, aber ich weiß nicht, wie ich ihn beheben kann.
In den Zeilen 28 und 45 muss es heißen:
Code:
FETCH NEXT FROM c_G0 INTO @reiheG0, @spalteG0, @ebeneG0, @fachG01

Aber das muss irgendwie VOR Zeile 15?

Kann mir damit vielleicht jemand helfen? Bitte?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K JDBC- In Java "stored procedure" erstellen für DB2,OracleSql ... Datenbankprogrammierung 3
G Stored Procedure Exception Handling Datenbankprogrammierung 3
G Stored Procedure in Oracle, Txt erzeugen Datenbankprogrammierung 9
B Fehler in Stored Procedure Datenbankprogrammierung 7
H Stored Procedure in PL/SQL Datenbankprogrammierung 5
C Stored Procedure mit Übergabeparameter Datenbankprogrammierung 2
C Stored Procedure - Aufruf mit call Datenbankprogrammierung 4
M ORM: Stored Procedure Datenbankprogrammierung 2
B MySQL Stored Procedure Aufruf funktioniert nicht Datenbankprogrammierung 4
W Stored procedure Datenbankprogrammierung 4
ruutaiokwu sql server 2008 stored procedures automatisiert vergleichen Datenbankprogrammierung 2
M Java Stored Procedures Datenbankprogrammierung 4
F Fehler bei Stored Function Datenbankprogrammierung 2
S Warum Stored Procedures in JDBC Datenbankprogrammierung 14
G Zahlen sich stored Procedures wirklich aus? Datenbankprogrammierung 12
G Stored Procedures Datenbankprogrammierung 3
K Stored Procedures, mittels Java Datenbankprogrammierung 8
S Oracle PL/SQL Procedure mit Type Rückgabe Datenbankprogrammierung 1
K mysql procedure Datenbankprogrammierung 5
A Maximale Anzahl offener Cursor überschritten Datenbankprogrammierung 5
S SQLite Selectanfrage lieft datensatz aber cursor ist leer Datenbankprogrammierung 2
Y java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid cursor state Datenbankprogrammierung 2
K DB2 Mit Cursor auf die DB Datenbankprogrammierung 19
A Maximale Anzahl offener Cursor überschritten Datenbankprogrammierung 4
R SQL Exception: Cursor position not valid Datenbankprogrammierung 7
S Datenbank zugriff optimieren - zugriff ohne cursor? Datenbankprogrammierung 7
E zu viele offene Cursor, die II. Datenbankprogrammierung 3
E Maximale Anzahl offener Cursor Datenbankprogrammierung 9
L Invalid cursor state Datenbankprogrammierung 9
A Maximale Anzahl offener Cursor erreicht Datenbankprogrammierung 3
J Derby Cursor Problem Datenbankprogrammierung 2
märliprinz JDBC Cursor Datenbankprogrammierung 5

Ähnliche Java Themen


Oben