5

このテーブル変数宣言の後にクエリが続きます。

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' が無効です。

私はすでにthisthis非常によく似た質問を見てきましたが、問題を解決する方法がわかりません。

実際の問題は何ですか?どうすれば解決できますか?

4

1 に答える 1

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これが間違いである場合は、単なるタイプミスであり、 withへの参照を必ず変更してくださいCI

またU、これが有効なテーブルであることを願っています。

于 2011-12-16T14:12:02.713 に答える