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

原文地址为: SQL server 动态SQL对变量讲行赋值

执行如下SQL

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

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

 

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

那么换成这样就行,

None.gif declare   @t   int
None.gif
set   @t = 1
None.gif
print ( @t )


None.gif exec ( ' declare @t int;
None.gifset @t=1;
None.gifprint(@t)
' )


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

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


 


转载请注明本文地址: SQL server 动态SQL对变量讲行赋值

猜你喜欢

转载自blog.csdn.net/CHCH998/article/details/82795784