Benutzer mit den meisten Antworten
MSSQL erst Update dann Select

Frage
-
Hallo,
ich habe folgenden Anweisung.
cmd.Parameters.Clear()
cmd.CommandText = "UPDATE Vorgangsart SET Letzte_Nummer = (Select Letzte_Nummer + 1 From Vorgangsart WHERE Jahr=@Jahr AND Bezeichnung=@Bezeichnung) , Lastupdate=@Lastupdate WHERE Jahr=@Jahr AND Bezeichnung=@Bezeichnung"
cmd.Parameters.Add("@Jahr", SqlDbType.NVarChar).Value = G_Jahr
cmd.Parameters.Add("@Bezeichnung", SqlDbType.NVarChar).Value = "VORGANG"
cmd.Parameters.Add("@Lastupdate", SqlDbType.DateTime).Value = Date.Now
cmd.ExecuteScalar()Wie kann ich jetzt die Anweisung ändern das ich als Rückgabewerte den neue Wert "Letzte_Nummer" bekommen?
Ich möchte diese in einer Anweisung durchführen.
Frank Bergmann
Antworten
-
Hallo Frank,
die OUTPUT Klausel hat nichts mit (Output-)Parametern zu tun, sie wird als normales Resultset zurückgegeben,
d. h. genauso als wenn Du SELECT ... verwenden würdest.Du kannst sie entweder über einen SqlDataReader abrufen (via cmd.ExecuteReader)
oder auch mit einem SqlDataAdapter eine DataTable aktualisieren.Gruß Elmar
- Als Antwort markiert Robert BreitenhoferModerator Montag, 23. Mai 2011 08:00
Alle Antworten
-
Hallo Frank,
da hatte ich ein Deja Vu ;-)
Lies bitte erst die Antworten zu Deiner Frage aus dem Februar: Select mit Update
Sollte dann etwas offen bleiben, können wir hier weitermachen, ...
Gruß Elmar
-
Hallo Elmar
ja ich hatte das irgentwie vergessen weil wieder etwas anderes dazwischen kann.
Ich habe den Code entsprechend geändert aber wie könne ich die Output Parameter ran.
cmd.Parameters.Clear()
cmd.CommandText = "UPDATE Vorgangsart SET Letzte_Nummer = Letzte_Nummer + 1, Lastupdate=@Lastupdate " & _
"OUTPUT inserted.VorgangsartID, inserted.Jahr, inserted.Letzte_Nummer, inserted.Lastupdate " & _
"WHERE Jahr=@Jahr AND VorgangsartID=@VorgangsartID"
cmd.Parameters.Add("@Jahr", SqlDbType.NVarChar).Value = G_Jahr
cmd.Parameters.Add("@VorgangsartID", SqlDbType.SmallInt).Value = AS_VorgangsartID
cmd.Parameters.Add("@Lastupdate", SqlDbType.DateTime).Value = Date.NowDim myNummer As New SqlParameter("Letzte_Nummer", SqlDbType.VarChar)
myNummer.Direction = ParameterDirection.Output
cmd.ExecuteNonQuery()Dim neueNummer As String = myNummer.Value
Das funktioniert nicht.
Gruß
Frank Bergmann
-
Hallo Frank,
die OUTPUT Klausel hat nichts mit (Output-)Parametern zu tun, sie wird als normales Resultset zurückgegeben,
d. h. genauso als wenn Du SELECT ... verwenden würdest.Du kannst sie entweder über einen SqlDataReader abrufen (via cmd.ExecuteReader)
oder auch mit einem SqlDataAdapter eine DataTable aktualisieren.Gruß Elmar
- Als Antwort markiert Robert BreitenhoferModerator Montag, 23. Mai 2011 08:00