ho il seguente codice in uno dei miei Sql (2008) stored procedure che esegue perfettamente bene:SQL Server SELECT INTO @variable?
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
Quindi la domanda per voi ragazzi è c'è la possibilità di fare qualcosa sulla falsariga di:
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
In modo da poter riutilizzare questi dati dalla memoria in altre dichiarazioni successive? SQL Server si adatta all'istruzione precedente, tuttavia non desidero creare variabili separate e inizializzarle ognuna tramite un'istruzione SELECT separata rispetto alla stessa tabella .... UGH !!!
Qualche suggerimento su come ottenere qualcosa lungo le linee senza più query sulla stessa tabella?
"per creare variabili separate e inizializzarle ognuna tramite un'istruzione SELECT separata" - perché dovresti farlo? 'declare @t table' una volta, e se è necessario riutilizzarlo, lanciare un' DELETE @ TempCustomer' prima di inserirlo nuovamente in esso – RichardTheKiwi