我有一段代码在我的Sql(2008)存储过程中,它可以完美地执行:
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 语句初始化每个变量... 唉!!!
有没有关于如何在不对同一表进行多次查询的情况下实现类似的功能的建议?
declare @t table
,如果需要重复使用它,请在再次插入之前执行DELETE @TempCustomer
。 - RichardTheKiwi