sql - 在不使用输出参数的情况下存储存储过程的结果

标签 sql sql-server stored-procedures

我有 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/

相关文章:

mysql - 如何使用下划线(_)和句点(.)拆分值?

sql - 左连接中的最新记录

mysql - 如何根据存储过程参数制作动态数据透视表

php - 显示 LIMIT 内唯一的随机记录

sql - SQL中同一列的百分比

mysql - 生成此报告的最有效方法是什么?

sql-server - 如何在 SQL Server 中所有行的顶部显示所有列 'Total' 行的总和?

sql - 分组和切换列和行

mysql - 如何列出mysql存储过程参数

c# - Entity Framework Core 2 中带有输出参数的 Exec 存储过程