0
我有這個存儲過程:如何在INSERT語句中使用(可能)臨時表而不是所有這些SELECT語句?
CREATE PROCEDURE [dbo].[InsertStuff]
@RequestId int
AS
BEGIN
SET NOCOUNT ON
INSERT INTO [dbo].[MyTable] ([Id], [Column2], [AnotherColumn])
VALUES
((SELECT Id FROM [dbo].[MyTable] WHERE Id = @RequestId)
,(SELECT Column2 FROM [dbo].[MyTable] WHERE Id = @RequestId)
,(SELECT AgreementTypeId FROM [dbo].[MyTable] WHERE Id = @RequestId))
END
如何修改它,所以我沒有做所有這些select語句...這是可怕的表現讓沿太可怕了設計。我假設我可以使用一個臨時表,但我想看看它爲我說明了在哪裏以及如何在存儲過程中執行此操作。謝謝。
被values關鍵字的要求? – JzInqXc9Dg
@Bubbas當您從語句中給出的值中插入一行時,需要使用值關鍵字,這些值可以直接在sql子句中或變量中使用,但使用select子句可以替代它。您可以從文檔中找到不同的選項:https://msdn.microsoft.com/en-us/library/ms174335.aspx#OtherTables –
因此,如果我確實需要從參數中插入一個值並保留之前的值記錄我可以用SELECT來完成。 SELECT Id,Column2,@AgreementTypeId – JzInqXc9Dg