2012-04-05 72 views
2

我的SQL查詢出現問題。我需要使用EXEC執行一條SQL語句,其中一列已經用一個變量表示,現在我必須用另一個變量表示該列的值。這是否可以實現,如果是這樣,你可以請建議任何其他解決方案嗎?EXEC Select Statement使用動態列將值存儲到變量中

我通過Google找到了此代碼段。但即使這樣也不能達到預期的效果。

我的SQL語句:

declare @i int, @j int =10 
exec sp_executesql N'select @i ='+ @j, N'@i int output', @i output 
select @i 

回答

3

這工作在我的SQL Server 2005:

declare @i int, @j int 
    set @j =10 
    declare @sql nvarchar(max) 
    set @sql = 'select @i =' + str(@j) 
    exec sp_executesql @sql, N'@i int output', @i output 
    select @i 
+0

日Thnx它的工作原理..我能知道是什麼區別?哦..除了鑄造問題.. – itb564 2012-04-05 12:32:51

+0

鑄造,那麼你不能在聲明初始化變量,並且sp_execute_sql不接受表達式作爲參數。在這種情況下,你必須發送一個變量@sql。 – 2012-04-05 12:37:53

+0

SQL Server 2008及更高版本可以在其聲明中初始化變量。 – RBarryYoung 2012-04-05 13:18:04

相關問題