首页蓝耳朵|小小蓝耳朵广州图书馆外文室英语儿童读物资源介绍网佛教青年之友旧版收集永硕E盘Phonics Short Vowels Game 
利用sp_executesql动态执行带输入、输出参数的sql语句
所属栏目:MS SQL 2000  时间:2010-12-07 15:09  作者:狼子

在查询分析器里按F1,什么解释都用,就是,还是用最简单的例子说一遍吧。。。

sp_executesql一共有3段参数:

第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

 

小楼宝宝的涂鸦花花(Imitater)的博客起名称骨测字皖ICP备06000023号-17