Comment utiliser une variable de table dans une “mise à jour de sélectionner” requête?

J'ai cette table de déclaration des variables suivies par une requête:

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;

Et U est définie comme suit:

CREATE TABLE [dbo].[U] (
    [UId]         UNIQUEIDENTIFIER UNIQUE NOT NULL,
    [Units]       INT DEFAULT ((0)) NOT NULL
);

Quand je lance que dans SQL Management Studio dans SQL Server 2005 Express-je obtenir suivantes:

Msg 208, Niveau 16, État 1, Ligne 24

Nom d'objet non valide '@CurrentItems'.

J'ai déjà regardé à travers cette et cette très des questions similaires, mais ne peut pas trouver comment résoudre le problème.

Quel est le problème et comment le résoudre?

UPDATE U SET U.Units = U.Units + CI.ItemUnits FROM @CurrentItems CI INNER JOIN U ON U.UId=CI.ItemId; fonctionne, j'ai essayé dès maintenant

OriginalL'auteur sharptooth | 2011-12-16