如何將選定的字段值從查詢存儲到變量中並在更新語句中使用它?如何將選擇結果分配給變量?
這裏是我的方法:
我正在寫一個SQL Server 2005的T-SQL存儲過程,它執行以下操作:
- 被從發票表發票ID和店鋪列表光標
- 從遊標讀取發票ID - > tmp_key可變
- 的foreach tmp_key發現從客戶表客戶發票主接觸ID
- 更新客戶端接觸與主接觸ID鍵
- 接近光標
這裏是我的代碼:
DECLARE @tmp_key int
DECLARE @get_invckey cursor
set @get_invckey = CURSOR FOR
select invckey from tarinvoice where confirmtocntctkey is null and tranno like '%115876'
OPEN @get_invckey
FETCH NEXT FROM @get_invckey into @tmp_key
WHILE (@@FETCH_STATUS = 0)
BEGIN
SELECT c.PrimaryCntctKey as PrimaryContactKey
from tarcustomer c, tarinvoice i
where i.custkey = c.custkey and i.invckey = @tmp_key
UPDATE tarinvoice set confirmtocntctkey = PrimaryContactKey where invckey = @tmp_key
FETCH NEXT FROM @get_invckey INTO @tmp_key
END
CLOSE @get_invckey
DEALLOCATE @get_invckey
如何存儲PrimaryContactKey及以下update語句的set子句中再次使用它?我是否創建一個遊標變量或只是一個int類型的另一個局部變量?
如下面@GilaMonster答案,這整個操作可以是單一的UPDATE語句( 「基於設定操作」,不與[T-SQL SET語句]混淆(HTTPS ://msdn.microsoft.com/en-us/library/ms189484.aspx))這是一個更好的方法(更快的執行,更少的開銷和更少的代碼)。我只是指出了這一點,因爲這個問題和所有當前最重要的答案都是關於如何編寫SET語句,但它並不是最好的開始。 – gregmac 2015-02-24 17:15:30