2011-12-16 38 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

相关问题