春夏秋冬。。。

一份耕耘,一份收获。。。

 

sp_executesql [对sqlserver系统存储过程的一点感悟]

sp_executesql
执行可以多次重用或动态生成的 Transact-SQL 语句或批处理。Transact-SQL 语句或批处理可以包含嵌入参数。
[具体可参考SQL Server联机帮助]

这里想说的是一个具体的应用。当从带变量的表名里获取一个字段内容时,可以用这个语句实现。在以前我都是用游标实现的。举例:declare @tabn varchar(30),@count int 
               declare @nsql nvarchar(1000)    --这里注意数据类型必须是nvarchar
            set @tabn='authors'            --使用pubs数据库
            set @nsql='select @count=count(1) from '+@tabn 
            exec sp_executesql @nsql,N'@count int output',@count output
            select @count
这样就能获取到@count的值。
用游标实现:
            declare @tabn varchar(30),@count int
            declare @sql varchar(1000) 
            set @tabn='authors'        --使用pubs数据库
            set @sql='declare cur_1 cursor for select count(1) from '+@tabn
            exec(@sql)
            open cur_1
            fetch next from cur_1 into @count
            close cur_1
            deallocate cur_1
            select @count

因游标消耗太多资源,尽量少用游标。
            

posted on 2007-10-16 11:43  雨泉  阅读(549)  评论(0编辑  收藏  举报

导航