我有这个表变量声明后跟一个查询:
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运行时,我得到以下内容:
Msg 208,Level 16,State 1,Line 24
无效的对象名称'@CurrentItems'。
我已经查看了this和this非常相似的问题,但无法弄清楚如何解决问题。
实际问题是什么?如何解决?
答案 0 :(得分:9)
您已将@CurrentItems
与CI
别名,因此请使用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的目的是什么?如果这是一个错误,只需输入错误,请确保使用CU
更改对CI
的任何引用。
您也没有告诉我们U
是什么,我希望这是一张有效的表格。