ฉันมีรหัสต่อไปนี้ในหนึ่งใน Sql ของฉัน (2008) Procs ที่เก็บไว้ซึ่งดำเนินการได้อย่างสมบูรณ์แบบ:
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 @t table
หนึ่งครั้งและหากคุณต้องการนำมาใช้ซ้ำให้ยิง aDELETE @TempCustomer
ก่อนใส่เข้าไปอีกครั้ง