2011-12-16 63 views
4

我有這個表變量聲明之後的查詢:如何在「從select更新」查詢中使用表變量?

DECLARE @CurrentItems TABLE 
(
    ItemId uniqueidentifier, 
    ItemUnits int 
) 

UPDATE U SET U.Units = U.Units + [@CurrentItems].ItemUnits 
    FROM @CurrentItems CI INNER JOIN U ON U.UId=CI.ItemId; 

而且U定義如下:

CREATE TABLE [dbo].[U] (
    [UId]   UNIQUEIDENTIFIER UNIQUE NOT NULL, 
    [Units]  INT DEFAULT ((0)) NOT NULL 
); 

當我運行在SQL Management Studio中針對SQL Server 2005 Express的我得到的以下:

消息208,級別16,狀態1,行24

無效的對象名稱'@CurrentItems'。

我已經看過thisthis非常類似的問題,但無法弄清楚如何解決問題。

什麼是實際問題,我該如何解決?

+0

`UPDATE U SET U.Units = U.Units + CI.ItemUnits FROM @CurrentItems CI INNER JOIN U ON U.UId = CI.ItemId;`works,我現在試過了 – chopikadze 2011-12-16 14:24:31

回答

8

你別名@CurrentItemsCI因此就使用CI

UPDATE U SET U.Units = U.Units + CI.ItemUnits 
    FROM @CurrentItems CI INNER JOIN U ON U.UId=CI.ItemId; 

也看看你查詢你有什麼樣U.UId = CU.ItemID。什麼是CU?你已經用CI創建了@CurrentItems的別名,那麼CU的目的是什麼?如果這是一個錯誤,只是一個錯字,請確保您更改CUCI的任何參考。

你也不會告訴我們U是什麼,我希望這是一個有效的表格。

+0

我試過了 - 它沒有'幫助。 – sharptooth 2011-12-16 14:16:18