In MS SQL Server Management Studio 2005, diesen Code ausgeführt wirdWarum verursachen verkettete Strings im Argument von EXEC manchmal einen Syntaxfehler in T-SQL?
EXEC('SELECT * FROM employees WHERE employeeID = ' + CAST(3 AS VARCHAR))
gibt diesen Fehler: Incorrect syntax near 'CAST'
Allerdings, wenn ich das tue, funktioniert es:
DECLARE @temp VARCHAR(4000)
SET @temp = 'SELECT * FROM employees WHERE employeeID = ' + CAST(3 AS VARCHAR)
EXEC(@temp)
fand ich eine Erklärung hier: T-SQL: Cannot pass concatenated string as argument to stored procedure
Nach der angenommenen Antwort kann EXEC
ein nehmen lokale Variable oder ein Wert als Argument, aber kein Ausdruck.
Wenn dies jedoch der Fall ist, warum funktionierts:
DECLARE @temp VARCHAR(4000)
SET @temp = CAST(3 AS VARCHAR)
EXEC('SELECT * FROM employees WHERE employeeID = ' + @temp)
'SELECT * FROM employees WHERE employeeID = ' + @temp
sicher sieht aus wie ein Ausdruck für mich, aber der Code ausführt, ohne Fehler.
Danke für die Antwort –