Tôi có đoạn mã sau vào một trong Sql (2008) lưu Procs của tôi mà thực hiện hoàn toàn tốt đẹp: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
Vậy câu hỏi cho các bạn được là có một khả năng để làm điều 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 ném một phù hợp với các tuyên bố 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 mỗi một trong số họ thông qua một tuyên bố SELECT riêng biệt chống lại cùng một bảng .... UGH !!!
Bất kỳ đề xuất nào về cách đạt được điều gì đó dọc theo dòng mà không có nhiều truy vấn đối với cùng một bảng?
"để tạo các biến riêng biệt và khởi tạo từng biến trong số đó thông qua câu lệnh SELECT riêng biệt" - tại sao bạn cần thực hiện điều đó? 'khai báo @t table' một lần, và nếu bạn cần tái sử dụng nó, hãy bật' DELETE @ TempCustomer' trước khi chèn vào nó một lần nữa – RichardTheKiwi