5

我有这个表变量声明,然后是一个查询:

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”。

我已经看过这个这个非常相似的问题,但不知道如何解决这个问题。

实际问题是什么,我该如何解决?

4

1 回答 1

9

您已使用别名@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 的目的是什么?如果这是一个错误,只是一个错字,请确保您更改对CUwith 的任何引用CI

你也不告诉我们是什么U,我希望这是一张有效的桌子。

于 2011-12-16T14:12:02.713 回答