我的一个 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 语句初始化每个变量....UGH!!!
关于如何在不对同一个表进行多次查询的情况下实现某些目标,有什么建议吗?
最佳答案
如果您想简单地分配一些变量以供以后使用,您可以使用以下方式一次性完成它们:
declare @var1 int,@var2 int,@var3 int;
select
@var1 = field1,
@var2 = field2,
@var3 = field3
from
table
where
condition
如果这就是您想要的东西
关于SQL Server SELECT INTO @variable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4823880/