Sql 如何在“中使用表变量”;从选择更新";查询
我有一个表变量声明,后跟一个查询:Sql 如何在“中使用表变量”;从选择更新";查询,sql,sql-server,sql-server-2005,tsql,table-variable,Sql,Sql Server,Sql Server 2005,Tsql,Table Variable,我有一个表变量声明,后跟一个查询: 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] (
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 Server 2005 Express的SQL Management Studio中运行时,我得到以下结果:
Msg 208,16级,状态1,第24行
无效的对象名称“@CurrentItems”
我已经研究过很多类似的问题,但不知道如何解决这个问题
实际问题是什么?我该如何解决?您已将
@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的用途是什么?如果这是一个错误,只是一个输入错误,请确保您使用CI
更改对CU
的任何引用
你也没有告诉我们什么是U
,我希望这是一个有效的表。@sharptooth,你完全删除了CU
?不幸的是,我使用了你的表定义,无法复制,它对我来说工作得非常好。我的错误-我忘了从表变量名中删除[]
。无需[]
@Sharptooth即可工作您是否在正确的数据库上下文中运行此操作?您应该使用use
关键字并指定正在处理的数据库<代码>使用MyDB…
@sharptooth-您应该复制粘贴的我的代码:)您不需要在表变量中使用[]
,因为它有别名。更新U SET U.Units=U.Units+CI.ItemUnits FROM@CurrentItems CI INNER JOIN U ON U.UId=CI.ItemId代码>有效,我现在已经试过了