SQL server 動態SQL對變數講行賦值

iSQlServer發表於2009-02-06

執行如下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對變數講行賦值declare @t int
SQL server 動態SQL對變數講行賦值
set @t=1
SQL server 動態SQL對變數講行賦值
print(@t)


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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-545474/,如需轉載,請註明出處,否則將追究法律責任。

相關文章