我有 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 id=@id
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]
最佳答案
您可以做的是将输出存储到表变量中:
DECLARE @tmpTable TABLE (ID UNIQUEIDENTIFIER)
INSERT INTO @tmpTable
EXEC dbo.up_proc2 ..........
然后从那里开始,稍后使用该表变量。
关于sql - 在不使用输出参数的情况下存储存储过程的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9377775/