我有2個存儲過程:up_proc1和up_proc2。存儲存儲過程的結果而不使用輸出參數
這是(的簡化版本)up_proc2:
CREATE PROCEDURE dbo.up_proc2
@id_campaign uniqueidentifier, @id_subcampaign uniqueidentifier,
@id_lead uniqueidentifier, @offer NVARCHAR(1000) = NULL
AS
SET NOCOUNT ON
DECLARE @id UNIQUEIDENTIFIER
SELECT @id = id FROM prospects WHERE id_lead = @id_lead
AND id_campaign = @id_campaign AND id_subcampaign = @id_subcampaign
IF @id IS NULL
BEGIN
SET @id = newid()
INSERT INTO prospects (id, id_campaign, id_subcampaign, id_lead, offer)
values (@id, @id_campaign, @id_subcampaign, @id_lead, @offer)
END
ELSE
BEGIN
UPDATE prospects set offer = @offer WHERE [email protected]
END
SELECT @id AS ID
GO
從up_proc1我打電話up_proc2。我想實現的是將up_proc2的@id存儲在up_proc1中聲明的變量中。這可能不使用輸出參數?
這是up_proc1的樣子:
CREATE PROCEDURE dbo.up_proc1
AS
SET NOCOUNT ON
DECLARE @fromProc2 UNIQUEIDENTIFIER
-- NOT WORKING
-- select @fromProc2 = exec up_insertProspects [snip]
-- ALSO NOT WORKING
-- exec @fromProc2 = up_insertProspects [snip]
爲什麼你要避免輸出參數?這正是他們想要的。 – 2012-02-21 13:15:29
我對sql不太熟悉。 up_proc2是一個現有的存儲過程。我不確定添加輸出參數是否不會破壞任何現有功能? up_proc2也從C#代碼調用。在從C#調用存儲過程時,是否必須將該輸出參數添加到參數列表中?如果沒有,那麼我可能確實可以使用輸出參數。 – TweeZz 2012-02-21 13:27:45
是的,您可以添加一個可爲空的輸出參數,並且C#不會注意(儘管如果您只檢索單個標量值,您應該更改C#代碼以使用它)。請看我的答案。 – 2012-02-21 14:06:46