在不使用输出参数的情况下存储存储过程的结果 [英] Store the result of a stored procedure without using an output parameter

查看:29
本文介绍了在不使用输出参数的情况下存储存储过程的结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有 2 个存储过程:up_proc1 和 up_proc2.

I have 2 stored procedures: up_proc1 and up_proc2.

这是 up_proc2(的简化版本):

This is (a simplified version of) 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 中声明的变量中.这可能不使用输出参数吗?

From up_proc1 I call up_proc2. What I would like to achieve is to store the @id of up_proc2 in a variable declared in up_proc1. Is this possible without using an output parameter?

这是 up_proc1 的样子:

This is how up_proc1 looks like:

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]

推荐答案

您可以做的是将输出存储到表变量中:

What you could do is store the output into a table variable:

DECLARE @tmpTable TABLE (ID UNIQUEIDENTIFIER)

INSERT INTO @tmpTable
   EXEC dbo.up_proc2 ..........

然后从那里开始,稍后使用该表变量.

and then go from there and use that table variable later on.

这篇关于在不使用输出参数的情况下存储存储过程的结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆