JDBC - Prozeduren und ihr Rückgabewert

Hallo,

ich hab mich via jdbc zu meiner Datenbank verbunden und kann auch mit Hilfe von statement.execute Prozeduren ausführen die auf dem DbServer gespeichert sind.
Wenn diese Prozeduren einen Wert zurückliefern wie kann ich auf diesen Rückgabewert zugreifen ?

k.

Hallo,
einfach einen Blick in die API, z.B.:

http://java.sun.com/j2se/1.3/docs/api/java/sql/State…

Wenn diese Prozeduren einen Wert zurückliefern wie kann ich auf diesen Rückgabewert zugreifen ?

Bei einer Query eignet sich executeQuery:

http://java.sun.com/j2se/1.3/docs/api/java/sql/State…

Zurückgegeben wird ein „ResultSet“ eine Ansammlung von Tabellenzeilen, mit dem via ResultSet.getXXX auf die einzelnen Spalten zugegriffen werden kann. Anzumerken ist noch, daß bei der Spaltennummer (falls verwendet) die Zählung bei 1 beginnt, und vor dem Zugriff via ResultSet.next auf die erste Zeile positioniert werden muß bzw. getestet werden muß, ob überhaupt noch Zeilen vorhanden sind. ResultSet.next schaltet dann auch zur nächsten Zeile weiter (falls vorhanden).

Gruss
Enno

Hallo,

danke für deine schnelle Antwort.

Wenn diese Prozeduren einen Wert zurückliefern wie kann ich auf diesen Rückgabewert zugreifen ?

Bei einer Query eignet sich executeQuery:

Habe ich auch verwendet leider liefert eben die Prozedur kein ResultSet.(java.sql.SQLException: No ResultSet was produced.) Dachte es gibt noch ne alternative Variante.

Habe unten nochmal die Prozedur gepostet. Vielleicht liegt auch da der Fehler, das kein ResultSet generiert wird

k.

–Syntax für MSDE (Sql Server 7.0 Kern)
CREATE PROCEDURE add_order
@orderNotation varchar(9) OUTPUT
AS
BEGIN
declare @username varchar(50)
declare @orderNotation varchar(9)
declare @year varchar(20)
set @year = DATEPART (yyyy, getDate())
set @username =(SELECT SUSER_SNAME(SUSER_SID()))
set @orderNotation=(select max(Bezeichnung) from Auftrag)
if (@orderNotation=0 OR @orderNotation is NULL)
begin
set @orderNotation=@year+‚0001‘
end
else
begin
if (@year!=substring(@orderNotation,0,4))
begin
set @orderNotation=@year+‚0001‘
end
else
begin
set @orderNotation=convert(char,convert(numeric,@orderNotation) +1)
end
end
insert into Auftrag (Bezeichnung,Status,Auftraggeber) values (@orderNotation,0,@username)
RETURN @orderNotation
END;

Hallo,
zunächst dem Stored-Procedures vom SQLServer kenne ich mich nicht aus. Aber es sollte sich vermutlich um ein CallableStatement handeln. Die Ausgabewerte müssen getypt werden - in deinem Fall wäre ein java.sql.Types.VARCHAR passend. Schau Dir mal

http://dbforums.com/arch/92/2003/2/694488

an, evtl. hilft das.

Gruss
Enno