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 maintenantOriginalL'auteur sharptooth | 2011-12-16
Vous devez vous connecter pour publier un commentaire.
Vous avez alias
@CurrentItems
avecCI
juste utiliserCI
:Aussi jeter un oeil à votre requête, vous avez quelque chose comme
U.UId = CU.ItemID
. Qu'est-ce que CU? Vous avez fait un alias pour @CurrentItems avec CI, alors quel est le but de CU? Si c'est une erreur, juste une faute de frappe assurez-vous de changer toute référence àCU
avecCI
.Vous ne nous dites pas ce que
U
est, j'espère que c'est une table valide.et vous avez supprimé
CU
complètement?Oui, je l'ai fait retirer.
Ma faute j'ai oublié de déposer le
[]
de la table nom de la variable. Fonctionne sans[]
.cette réponse m'aider , merci
OriginalL'auteur JonH