andyyuduo 发表于 2015-7-1 14:50:22

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

  执行如下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  


  
页: [1]
查看完整版本: SQL server 动态SQL对变量讲行赋值