Hallo,
ich brauche dringend Hilfe - bin am Verzweifeln.
Ich habe eine Stored Procedure (MS-SQL):
Wie kann ich mir das Ergebnis in Java anzeigen lassen?
Dazu hab ich bisher folgendes:
Die Datenbankverbindung steht - "normale" Abfragen hab ich auch schon ausgeführt, aber die Stored Procedure bringt mich an den Rand der Verzweiflung.
ich brauche dringend Hilfe - bin am Verzweifeln.
Ich habe eine Stored Procedure (MS-SQL):
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 GOTO Schleife; END Schleife: 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' CLOSE c_G0fach2_1 DEALLOCATE c_G0fach2_1 GOTO Ende; END ELSE CLOSE c_G0fach2_1 DEALLOCATE c_G0fach2_1 GOTO Weiter; 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' CLOSE c_G0fach2_3 DEALLOCATE c_G0fach2_3 GOTO Ende; END ELSE CLOSE c_G0fach2_3 DEALLOCATE c_G0fach2_3 GOTO Weiter; END Weiter: FETCH NEXT FROM c_G0 INTO @reiheG0, @spalteG0, @ebeneG0, @fachG01 GOTO Schleife; Ende: SET @reihe = @reiheG0; SET @spalte = @spalteG0; SET @ebene = @ebeneG0; CLOSE c_G0 DEALLOCATE c_G0 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 --DROP PROCEDURE boxG0
Dazu hab ich bisher folgendes:
Code:
try{ CallableStatement callG0 = Frame.cn.prepareCall("{call boxG0(?, ?, ?, ?, ?)}"); callG0.registerOutParameter(1, Types.CHAR); callG0.registerOutParameter(2, Types.CHAR); callG0.registerOutParameter(3, Types.CHAR); callG0.registerOutParameter(4, Types.CHAR); callG0.registerOutParameter(5, Types.CHAR); Frame.rs = callG0.executeQuery(); if(Frame.rs.next()){ reiheG01 = Frame.rs.getString(1); spalteG01 = Frame.rs.getString(2); ebeneG01 = Frame.rs.getString(3); fachG01 = Frame.rs.getString(4); fachG02 = Frame.rs.getString(5); System.out.println(reiheG01 + spalteG01 + ebeneG01 + fachG01 + fachG02); } }catch(Exception ex){ System.out.println("Keine Verbindung: " + ex); }
Comment