天天看點

SQL server 動态SQL對變量講行指派

執行如下SQL

SQL server 動态SQL對變量講行指派

declare @t int

SQL server 動态SQL對變量講行指派

exec('set @t=1')

SQL server 動态SQL對變量講行指派

print(@t)

報如下錯誤!

伺服器: 消息 137,級别 15,狀态 2,行 1

必須聲明變量 '@t'。

 實際就是變量與動态語句不能共享,

那麼換成這樣就行,

SQL server 動态SQL對變量講行指派
SQL server 動态SQL對變量講行指派

set @t=1

SQL server 動态SQL對變量講行指派

SQL server 動态SQL對變量講行指派

exec('declare @t int;

SQL server 動态SQL對變量講行指派

set @t=1;

SQL server 動态SQL對變量講行指派

print(@t)')

但是有時候你一定要,變量與動态SQL結合起來。

比如,你在存儲過程中定義一個輸出參數,◎COUNT int output

而你在獲得這個值的最好的方法就是動态SQL,那麼有什麼好的方式嗎?

那就要用到系統存儲過程,sp_executesql

SQL server 動态SQL對變量講行指派
SQL server 動态SQL對變量講行指派

         declare @sql2 nvarchar(500)

SQL server 動态SQL對變量講行指派

           set @sql2 = 'select @COUNT = count(distinct('+@groupby+')) from TG_ENTRY where '+@sqlWhere

SQL server 動态SQL對變量講行指派

    execute sp_executesql 

SQL server 動态SQL對變量講行指派

          @sql2,

SQL server 動态SQL對變量講行指派

          N'@COUNT int output',

SQL server 動态SQL對變量講行指派

          @TOTAL_COUNT output