ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL server 动态SQL对变量讲行赋值

SQL server 动态SQL对变量讲行赋值

原创 Linux操作系统 作者:iSQlServer 时间:2009-02-06 17:38:01 0 删除 编辑

执行如下SQL

declare @t int
exec('set @t=1')
print(@t)

报如下错误!
服务器: 消息 137,级别 15,状态 2,行 1
必须声明变量
'@t'

 实际就是变量与动态语句不能共享,

那么换成这样就行,

declare @t int
set @t=1
print(@t)


exec('declare @t int;
set @t=1;
print(@t)
')


但是有时候你一定要,变量与动态SQL结合起来。
比如,你在存储过程中定义一个输出参数,◎COUNT int output
而你在获得这个值的最好的方法就是动态SQL,那么有什么好的方式吗?
那就要用到系统存储过程,sp_executesql

 
         
declare @sql2 nvarchar(500)
           
set @sql2 = 'select @COUNT = count(distinct('+@groupby+')) from TG_ENTRY where '+@sqlWhere
    
execute sp_executesql 
          
@sql2,
          N
'@COUNT int output',
          
@TOTAL_COUNT output


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16436858/viewspace-545474/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-10-17

  • 博文量
    1319
  • 访问量
    2101857