最近要用到动态SQL,就找了下资料,记录下来,以后忘了好用。
-- EXEC 示例:
EXEC('SELECT * FROM [table]')
-- EXEC sp_executesql 参数传入传出示例:
DECLARE @countValue INT
DECLARE @columnValue INT
SET @columnValue=1
EXEC sp_executesql
-- SQL语句,只可为Nvarchar
N'
SELECT @countValue=COUNT(1) FROM [table]
WHERE [columnName1]=@columnValue1
AND [columnName2]=@columnValue2
AND [columnName3]=@columnValue3
',
-- SQL语句参数,只可为Nvarchar
N'
@countValue INT OUTPUT,
@columnValue1 INT,
@columnValue2 INT,
@columnValue3 INT
',
@countValue OUTPUT, -- @countValue INT OUTPUT
@columnValue, -- 对应参数2:@columnValue1 INT
2, -- 对应参数3:@columnValue2 INT
@columnValue3=3 -- 对应参数4:@columnValue3 INT(注意:使用 @param=value 后,之后的参数也只能为此形式)
PRINT @countValue