私の Sql (2008) ストアド プロシージャの 1 つに次のコードがあり、これは問題なく実行されます。
CREATE PROCEDURE [dbo].[Item_AddItem]
@CustomerId uniqueidentifier,
@Description nvarchar(100),
@Type int,
@Username nvarchar(100),
AS
BEGIN
DECLARE @TopRelatedItemId uniqueidentifier;
SET @TopRelatedItemId =
(
SELECT top(1) RelatedItemId
FROM RelatedItems
WHERE CustomerId = @CustomerId
)
DECLARE @TempItem TABLE
(
ItemId uniqueidentifier,
CustomerId uniqueidentifier,
Description nvarchar(100),
Type int,
Username nvarchar(100),
TimeStamp datetime
);
INSERT INTO Item
OUTPUT INSERTED.* INTO @TempItem
SELECT NEWID(), @CustomerId, @Description, @Type, @Username, GETDATE()
SELECT
ItemId,
CustomerId,
@TopRelatedItemId,
Description,
Type,
Username,
TimeStamp
FROM
@TempItem
END
GO
そこで皆さんへの質問ですが、次のようなことをする可能性があるかどうかです:
DECLARE @TempCustomer TABLE
(
CustomerId uniqueidentifier,
FirstName nvarchar(100),
LastName nvarchar(100),
Email nvarchar(100)
);
SELECT
CustomerId,
FirstName,
LastName,
Email
INTO
@TempCustomer
FROM
Customer
WHERE
CustomerId = @CustomerId
後続の他のステートメントでメモリからこのデータを再利用できるようにするには? SQL Server は上記のステートメントで問題を引き起こしますが、別々の変数を作成し、同じテーブルに対して別々の SELECT ステートメントを使用してそれぞれを初期化する必要はありません... うーん!!!
同じテーブルに対して複数のクエリを実行せずに、同様のことを実現する方法について何か提案はありますか?
ベストアンサー1
後で使用するためにいくつかの変数を単純に割り当てたい場合は、次のようにして一度に実行できます。
declare @var1 int,@var2 int,@var3 int;
select
@var1 = field1,
@var2 = field2,
@var3 = field3
from
table
where
condition
もしあなたが求めているのがそういうものなら