繁体   English   中英

如何在另一个srored过程中的一个存储过程中使用SELECT的结果?

How do I use result of SELECT in one stored procedure in another srored procedure?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个存储过程来计算几个值, SELECT是它们:

CREATE PROCEDURE [dbo].[MyProc]
AS
   DECLARE @value1 int;
   DECLARE @value2 int;
   SET @value1 =...
   IF( @value1 IS NULL ) 
       RETURN 0;
   SET @value2 =...
   SELECT @value1 AS Value1, @value2 AS Value2;
RETURN 0;

我知道我可以把它变成一个表函数但我宁愿不这样做,因为中间有RETURN - 有时候没有什么可以返回的。

我想从另一个存储过程调用该存储过程,并在另一个过程中使用SELECT检索的值。 我怎么做?

2 个回复

您可以创建一个temptable并在其中插入两个值。

CREATE TABLE #Temp (value1 int, value2 int)

INSERT INTO #Temp (value1, value2)
EXEC [dbo].[MyProc]

如果Value1为NULL,则#Temp中将没有记录,在这种情况下,您不需要返回0。

但如果它不是你的目标,并且你需要返回0,那么你应该使用@ value1和@ value2作为输出参数。

您可以添加输出参数:

CREATE PROCEDURE [dbo].[MyProc]
(
  @value1 int = null output,
  @value2 int = null output
)
AS

   SET @value1 =...
   IF( @value1 IS NULL ) 
       RETURN 0;
   SET @value2 =...
   SELECT @value1 = Value1, 
          @value2 = Value2;
RETURN 0;

并使用它:

declare @v1 int, 
        @v2 int

exec MyProc @v1 out, @v2 out

select @v1, @v2

或者如果您需要更多值,可以使用临时表

create table #tmp
(
  val1 int null,
  val2 int null 
)

CREATE PROCEDURE [dbo].[MyProc]   
AS

   SET @value1 =...
   IF( @value1 IS NULL ) 
       RETURN 0;
   SET @value2 =...

   insert into #tmp
   SELECT Value1, Value2
   from tab

RETURN 0;

并使用它:

create table #tmp
(
  val1 int null,
  val2 int null 
)

exec MyProc 

select *
from #tmp

drop table #tmp
1 如何在另一个过程中使用存储过程中的参数

我创建了一个在线员工轮流申请。 我在一周的每一天都有一个存储过程,其中有一个用于Rota表的自动增量主键。 所选星期中的每一天将具有与外键相同的rota ID 。 我选择的第一天没有问题,但是接下来的几天对于外键RotaID返回NULL,因为我不知道如何将RotaID传递到其他存储过程 ...

2 如何在另一个存储过程(SQL)中使用一个存储过程中的变量

我编写了一个存储过程,如下所示(这是一个简化的版本-SP做了很多其他事情,但是这些是关键部分): 该SP可以按我的意愿工作。 但是,我希望能够在其他存储过程中引用@custnumber的值。 有什么方法可以保留@custnumber的值,但又不重新运行usp_GetCustomerN ...

3 在另一个存储过程中使用存储过程中的值

因此,在我正在处理的项目中,有一个存储过程(我们将其称为SP_Premium )为我提供了一些值,包括我需要的Premium编号。 我发现我不能使用Linq to EF解决我的问题,所以我应该使用存储过程。 这里的问题是,我需要在新存储过程中使用SP_Premium的Premium编 ...

6 如何在另一个存储过程中使用从存储过程返回的多个表

我得到存储过程返回2表。 我在Visual Studio 2010的c#中都使用了这两个信息,没有任何问题。 现在我的问题是,在C#端完成工作之后,我想使用全新的更新存储过程以新日期更新结果中的所有字段。 为此,最简单的理论方法是调用相同的存储过程,并在我的update语句中使用返回表 ...

8 SQL Server在另一个存储过程中创建的存储过程中使用本地临时表

我继承了一个包含许多存储过程的数据库,这些存储过程创建了本地临时表,调用了使用临时表的过程,然后删除了临时表。 像这样: 我以前没有看过用这种方式编写的程序。 我可以肯定地说这是安全的吗,因为嵌套过程将始终在同一spid中调用,并且始终能够访问temp表吗? ...

9 从存储过程中的select语句查询中调用另一个存储过程

我对MYSQL和存储过程非常陌生。 我试图找到一种方法,可以通过从存储过程中的表中获取数据来在循环内调用存储过程。 以下是示例代码,可以帮助您更好地理解。 程序 上面的代码大多数运行正常,但是问题是它只处理一条记录,而我在Marks表中有48条记录。 但是我不知道如何在SP ...

10 操作存储过程中要在另一个存储过程中使用的数据列表

目前我正在 SQL Server 中使用 T-SQL 编写存储过程。 我的脚本包含运行另一个存储过程以从表中获取数据列表的代码。 我想操作数据,使用数据列表来修改它们以用于其他目的(例如总结一列并添加更多数据列表)来自存储过程。 我知道的一种方法是创建一个临时表。 但在那之后,我不太确定。 请帮忙。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM