1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Rueckgabewert einer Stored Procedure + JDBC

  • deSertXtall
  • 5. Januar 2006 um 18:35
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • deSertXtall
    Punkte
    140
    Beiträge
    22
    • 5. Januar 2006 um 18:35
    • #1

    Hi. ich hab derzeit das Problem, dass ich den Rueckgabewert, der sich durch das Ausfuehren einer Stored Procedure ergibt nicht in meiner Java Application abrufen kann.

    Info:
    Database: MS-SQLServer 2000
    JDBC Driver: Microsoft SQL Server 2000 Driver for JDBC
    Java vs. 1.5

    Die SP soll den letzten verwendeten Identity Wert einer Tabelle @tb zurueckliefern. Die Berechnung fuer diesen Index stimmt. So sieht die SP aus:

    Code
    CREATE PROCEDURE proc_getLastIdentityValue @tb varchar(20)
    AS
    DECLARE @lastIndex varchar(20)
    --for testing
    INSERT INTO tbRegion (RegionName,ISOCODE2,ISOCODE3) Values ('myRegion','MM','MMM')
    set @lastIndex = IDENT_CURRENT(@tb)
    return @lastIndex
    GO

    Wenn ich nun die SP in meiner Application starte erhalte ich aber immer nur ein leeres ResultSet. Die SP wird jedoch ausgefueht da das INSERT erfolgreich durchgefuehrt wird! So sieht der Java Code aus:

    Code
    String query = "EXEC proc_getLastIdentityValue @tb=?";
    CallableStatement cstmt = conn.prepareCall(query);
    cstmt.setString(1,"myTable");
    ResultSet rs = cstmt.executeQuery(); //rs ist nach executeQuery() NULL

    Tja vielleicht kann mir da jemand aus weiter helfen.

  • deSertXtall
    Punkte
    140
    Beiträge
    22
    • 5. Januar 2006 um 22:48
    • #2

    Habs endlich irgendwie hingebogen. Was so ein Hatscher quer durch die Stadt nicht alles fuer Eingebungen bringt ;). Bin zwar mit der Art, wie es geloest ist nicht zufrieden aber es geht zumindest mal. Es sollte ja auch durch das Deklarieren eines OUTPUT Wertes in der SP funktionieren. Aber das hab ich bis jetzt nicht herausgefunden. Vielleicht kann mir das ja jemand stecken, der sich bei Ms-SQL etwas besser auskennt als ich. Mein derzeitiger funktionierender Loesungsweg:

    Code fuer SP:

    Code
    CREATE PROCEDURE proc_getLastIdentityValue @tb varchar(30)
    AS
    DECLARE @lastIndex varchar(20)
    SET @lastIndex = IDENT_CURRENT(@tb)
    SELECT @lastIndex
    GO


    Javacode:

    Code
    CallableStatement cstmt = conn.prepareCall(query);
    cstmt.setString(1,"myTable");
    ResultSet rs = cstmt.executeQuery(); //beinhaltet nun den hoechsten ID
  • deSertXtall
    Punkte
    140
    Beiträge
    22
    • 5. Januar 2006 um 23:03
    • #3

    Tja also meine Selbstgespraeche fruchten anscheinend! Und fuer den Fall, dass mal jemand dasselbe Problem hat is hier der Code:

    SP:

    Code
    CREATE PROCEDURE proc_getLastIdentityValue @tb varchar(30) output
    AS
    SET @tb = IDENT_CURRENT(@tb)
    GO

    Javacode:

    Code
    CallableStatement cstmt = conn.prepareCall(query);
    cstmt.setString(1,"tbRegion");
    cstmt.registerOutParameter(1,Types.VARCHAR);
    cstmt.execute();
    String id = cstmt.getString(1);

    lg

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum