In MS SQL Server Management Studio 2005, l'esecuzione di questo codicePerché la concatenazione di stringhe nell'argomento di EXEC causa talvolta un errore di sintassi in T-SQL?
EXEC('SELECT * FROM employees WHERE employeeID = ' + CAST(3 AS VARCHAR))
dà questo errore: Incorrect syntax near 'CAST'
Tuttavia, se faccio questo, funziona:
DECLARE @temp VARCHAR(4000)
SET @temp = 'SELECT * FROM employees WHERE employeeID = ' + CAST(3 AS VARCHAR)
EXEC(@temp)
ho trovato una spiegazione qui: T-SQL: Cannot pass concatenated string as argument to stored procedure
In base alla risposta accettata, EXEC
può richiedere un variabile locale o un valore come argomento, ma non un'espressione.
Tuttavia, se questo è il caso, perché fa questo lavoro:
DECLARE @temp VARCHAR(4000)
SET @temp = CAST(3 AS VARCHAR)
EXEC('SELECT * FROM employees WHERE employeeID = ' + @temp)
'SELECT * FROM employees WHERE employeeID = ' + @temp
sembra certo, come un'espressione a me, ma il codice viene eseguito senza errori.
Grazie per la risposta –