【问题标题】:Calling a stored procedure (A) from stored procedure (B) and using the result set form A in B从存储过程 (B) 调用存储过程 (A) 并在 B 中使用结果集形式 A
【发布时间】:2014-10-13 22:14:10
【问题描述】:

在 SQL Server 2012 中,我正在寻找一种从存储过程 (B) 调用存储过程 (A) 的方法。 SP A 返回一个我需要在 SP B 中使用的结果集。 这可能吗?

【问题讨论】:

标签: sql sql-server stored-procedures ssms-2012


【解决方案1】:

是的,也有多个列:

create table tablea
(
     cola int,
     colb varchar(50) NULL
)

GO
insert into tablea(cola, colb) values (1, 'test')
GO

CREATE PROCEDURE sp_A
AS
BEGIN

   SELECT cola, colb from tablea
END
GO

CREATE PROCEDURE sp_B
AS
BEGIN

 Declare @TempTable Table (col1 int, col2 varchar(50) NULL)

 Insert @TempTable Exec sp_A

 SELECT * from @TempTable

END

GO

exec sp_B

【讨论】:

  • 我需要将一个结果集返回给 b,其中包含需要在 B 中使用的多行
  • @TimBrown 好的,以上内容适用于多列。
  • 我仍然收到错误“无法嵌套 INSERT EXEC 语句。”
  • 好的,看起来您在存储过程链中执行了许多插入执行 - 请参见此处:stackoverflow.com/questions/3795263/…
  • 我认为您应该考虑在不同的过程中创建一个表并从该表中插入和选择。
【解决方案2】:

您可以创建一个临时表/表变量/真实表并将结果插入其中。

Insert Into MyTable
EXEC MySP

【讨论】:

  • 当我尝试此操作时,我收到错误“无法嵌套 INSERT EXEC 语句。”
  • 我一直在使用它,没有任何问题。您是否只使用SELECT * FROM {Table} 之类的方法返回 1 个表的结果?还是您使用的是 RETURN ?您的 SP (A) 中的声明?
猜你喜欢
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 2015-05-16
  • 1970-01-01
  • 1970-01-01
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多