Tim*_*man 11 t-sql concatenation exec
在MS SQL Server Management Studio 2005中,运行此代码
EXEC('SELECT * FROM employees WHERE employeeID = ' + CAST(3 AS VARCHAR))
Run Code Online (Sandbox Code Playgroud)
给出了这个错误: Incorrect syntax near 'CAST'
但是,如果我这样做,它的工作原理:
DECLARE @temp VARCHAR(4000)
SET @temp = 'SELECT * FROM employees WHERE employeeID = ' + CAST(3 AS VARCHAR)
EXEC(@temp)
Run Code Online (Sandbox Code Playgroud)
我在这里找到了一个解释:T-SQL:不能将连接字符串作为参数传递给存储过程
根据接受的答案,EXEC可以将局部变量或值作为其参数,而不是表达式.
但是,如果是这种情况,为什么这样做:
DECLARE @temp VARCHAR(4000)
SET @temp = CAST(3 AS VARCHAR)
EXEC('SELECT * FROM employees WHERE employeeID = ' + @temp)
Run Code Online (Sandbox Code Playgroud)
'SELECT * FROM employees WHERE employeeID = ' + @temp 肯定看起来像一个表达式,但代码执行没有错误.