Ich habe den folgenden Code in einem meiner gespeicherten SQL (2008) -Prozesse, der einwandfrei ausgeführt wird:
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
Die Frage für euch ist also, ob es eine Möglichkeit gibt, etwas in der Art von:
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
Damit ich diese Daten aus dem Speicher in anderen folgenden Anweisungen wiederverwenden kann? SQL Server löst eine Anpassung mit der obigen Anweisung aus, ich möchte jedoch keine separaten Variablen erstellen und jede einzelne über eine separate SELECT-Anweisung für dieselbe Tabelle initialisieren müssen .... UGH !!!
Irgendwelche Vorschläge, wie Sie etwas in dieser Richtung erreichen können, ohne mehrere Abfragen für dieselbe Tabelle durchzuführen?
declare @t table
einmal, und wenn Sie es wiederverwenden müssen, feuern Sie ein,DELETE @TempCustomer
bevor Sie es wieder einsetzen