Eu tenho o seguinte código em um dos meus Sql (2008) Stored Procs que executa perfeitamente:
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
Portanto, a pergunta para vocês é que existe a possibilidade de fazer algo como:
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
Para que eu pudesse reutilizar esses dados da memória em outras declarações a seguir? O SQL Server se encaixa com a instrução acima, porém não quero criar variáveis separadas e inicializar cada uma delas por meio de uma instrução SELECT separada na mesma tabela ... UGH !!!
Alguma sugestão sobre como conseguir algo nesse sentido sem várias consultas na mesma tabela?
declare @t table
uma vez, e se você precisa de reutilizá-lo, disparar umDELETE @TempCustomer
antes de inserir-lo novamente