Immer den Rückgabewert von JDBC, MSSQL
Ich bin die Verbindung zum SQL-Server (2005) durch Java unter Verwendung der Microsoft SQL Server JDBC Driver 2.0.
Wie bekomme ich den return-Wert einer gespeicherten Prozedur? Ich mache etwas, wie:
Connection connection = dataSource.getConnection()
CallableStatement proc = connection.prepareCall("{ call dbo.mySproc() }");
proc.execute();
Soll ich mich mit execute()? executeQuery()? executeUpdate()? Keine von diesen scheinen einen Rückgabewert zurückgeben standardmäßig, aber ich bin mir nicht wirklich sicher, wie um es zu bekommen.
EDIT 1: Zu sein klar, ich weiß, wie aufrufen von gespeicherten Prozeduren. Diese Frage ist speziell über, wie man den Rückgabewert (im Gegensatz zu einem Result-Set). Der Rückgabewert ist eine ganze Zahl, die in der Regel generiert, wenn Sie eine Abfrage ausführen, ohne Ergebnis Eingestellt oder, wenn Sie ausdrücklich so etwas wie RETURN 0
in Ihrer SQL.
EDIT 2: executeUpdate() liefert einen int, aber dieser int ist nicht das gleiche wie die Return-Wert. Auch ein OUT-parameter ist nicht das gleiche wie eine Rückkehr Wert.
Ich bin auf der Suche insbesondere, um die Rückkehr Wert, ich bin nicht auf der Suche nach Allgemeinen Informationen über den Aufruf von sprocs.
InformationsquelleAutor Ryan Elkins | 2009-12-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bozho 2. überarbeitete Antwort war nahe, aber nicht ganz da. Sie führte mich zu der Antwort obwohl.
Unter dem code-Beispiel habe ich begonnen, mit dem wir uns am Ende mit:
Den key-pieces hier sind die "? =" vor dem "Aufruf" in der
prepareCall
Funktion, die festlegt, eine Stelle für den Rückgabewert und dieregisterOutputParameter
. Es muss registriert werden, als ein Integer, da der Rückgabewert immer ein int ist (zumindest in SQL Server, vielleicht ist es anders in anderen DBs). Sie haben daher, um es mitgetInt
. Getestet habe ich diese Methode und es funktioniert.Types.INTEGER
istjava.sql.Types.INTEGER
.InformationsquelleAutor Ryan Elkins
(oder die Methode des entsprechenden Typs. Sie können
getObject
alternativ)Vom ein Alter erste-Schritte-tutorial
(Btw, die links, die wurden zur Verfügung gestellt von Umesh hatte diese Art von Informationen.)
Nein, es ist nicht im Kontext von CallableStatement (überprüfen Sie meine aktualisierte Antwort)
Die prepare-Aufruf-syntax ist falsch (keine JDBC-escape-syntax), die out-parameter muss registriert werden, um später zur Verfügung gestellt, und der link ist tot...
InformationsquelleAutor Bozho