Tôi có đoạn mã sau trong một trong các Procs được lưu trữ Sql (2008) của tôi, nó thực thi hoàn toàn tốt:
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
Vì vậy, câu hỏi cho các bạn là có khả năng để làm một cái gì đó dọc theo dòng:
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
Để tôi có thể sử dụng lại dữ liệu này từ bộ nhớ trong các câu sau đây? SQL Server đưa ra một sự phù hợp với câu lệnh trên, tuy nhiên tôi không muốn phải tạo các biến riêng biệt và khởi tạo từng biến trong số chúng thông qua một câu lệnh CHỌN riêng biệt trong cùng một bảng .... UGH !!!
Bất kỳ đề xuất nào về cách đạt được một cái gì đó dọc theo dòng mà không có nhiều truy vấn đối với cùng một bảng?
declare @t table
một lần và nếu bạn cần sử dụng lại, hãy bắn một lầnDELETE @TempCustomer
trước khi chèn lại