第1段:要执行的动态sql语句,这个语句里,可以带变量
第2段,按顺序定义动态sql语句中用到的每一个变量,如果是输出参数,要定义output
第3段,按第2段里的定义顺序,设置参数的值,如果是接收输出参数值的参数,要定义output
上面3段参数,第1、2两个,如果是用变量值的,要用nvarchar类型
--创建测试表
create table #temp ( tid int )
--插入3个测试记录
insert into #temp ( tid ) values ( 1 )
insert into #temp ( tid ) values ( 2 )
insert into #temp ( tid ) values ( 3 )
--声明动态语句变量
declare @sql nvarchar(100)
--传入参数
declare @tid int
set @tid = 3
set @sql = 'select * from #temp where tid = @id'
exec sp_executesql @sql, N'@id int', @tid
--输出参数
declare @rowsCount int, @SumID int
set @sql = 'select @r = count(tid), @s = sum(tid) from #temp'
exec sp_executesql @sql,
N'@r int output, @s int output',
@rowsCount output, @SumID output
select @rowsCount as RowsCount, @SumID as SumID
--传入并输出
set @sql = 'select @r = count(tid), @s = sum(tid) from #temp where tid < @id'
exec sp_executesql @sql,
N'@r int output, @s int output, @id int',
@rowsCount output, @SumID output, @tid
select @rowsCount as RowsCount, @SumID as SumID
--删除测试表
drop table #temp