Как использовать табличную переменную в запросе «обновление из выбора»?

У меня есть объявление этой табличной переменной, за которым следует запрос:

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'.

Я уже рассматривал этот и этот очень похожие вопросы, но не могу понять, как решить эту проблему.

В чем проблема на самом деле и как ее решить?

5
задан Community 23 May 2017 в 12:18
поделиться