MSSQL: Problem mit Zusammensetzen von SP
sebastian
- datenbank
hallo zusammen
hab ein problem mit einem sql-statement, dass ich per stored procedure ausführen möchte auf nem MSSQL:
ALTER PROCEDURE sp_admin_activate
@nID AS INTEGER,
@bActive AS INTEGER,
@strTable AS VARCHAR(64)
AS
DECLARE @strSQL AS NVARCHAR(4000)
SET @strSQL = ''
SET @strSQL = @strSQL + 'UPDATE '
SET @strSQL = @strSQL + @strTable + ' SET [active] = ' + @bActive + ' WHERE '
SET @strSQL = @strSQL + @strTable
SET @strSQL = @strSQL + '_ID = ' + @nID
EXEC sp_executesql @strSQL
GO
ich will also ein dynamisches sql-statement @strSQL erstellen, um so eine globale aktivierungs-funktion zu haben. die funktion aktiviert den entsprechenden datensatz auf live/nicht live.
problem:
wenn ich das statement ausführe zb per "exec sp_admin_activate 1, 0, 'events')" bekomme ich folgende fehlermeldung:
"Syntaxfehler beim Konvertieren des nvarchar-Wertes 'UPDATE events SET [active] = '' in eine Spalte vom Datentyp int."
was mache ich falsch? @strSQL ist doch nicht INT und ich sehe keine neuen zuweisungen...
vielen dank für hilfe :)
sebastian
你好 sebastian,
problem:
wenn ich das statement ausführe zb per "exec sp_admin_activate 1, 0,
'events')" bekomme ich folgende fehlermeldung:"Syntaxfehler beim Konvertieren des nvarchar-Wertes 'UPDATE events SET
[active] = '' in eine Spalte vom Datentyp int."was mache ich falsch? @strSQL ist doch nicht INT und ich sehe keine neuen
zuweisungen...
Nein, aber anscheinend ist [active] vom Typ int. Und int kann dann nicht ''
enthalten – warum nimmst du da nicht 0?
再见,
克里斯蒂安
Hallo,
SET @strSQL = @strSQL + @strTable + ' SET [active] = ' + @bActive + ' WHERE '
"Syntaxfehler beim Konvertieren des nvarchar-Wertes 'UPDATE events SET [active] = '' in eine Spalte vom Datentyp int."
Für mich sieht es so aus, als ob es Probleme mein impliziten Umwandeln des Integers in einen String gab.
Versuche eventuell, @bActive (und auch @nID) explizit umzuwandeln (via CAST oder CONVERT).
Grüße
Klaus