SQL存储过程多个结果到临时表中

Posted

技术标签:

【中文标题】SQL存储过程多个结果到临时表中【英文标题】:SQL's stored procedure multiple result into temp table 【发布时间】:2015-10-30 17:26:35 【问题描述】:

有什么方法可以创建单个存储过程,返回 N 个结果集并在 SQL JOB 内部将这 N 个结果分成 N 个不同的临时表?

我有四个存储过程,每个 SP 返回结果集。 (所有结果都不同)

所有这些 SP 都在单个 SQL 作业中用于报告。 到目前为止,我声明了四个临时表来保存四个存储过程的结果,但我希望有一个包含所有结果集的存储过程,同时在 SQL JOB 中将它们分开。

编辑:我需要将结果集分成临时表,因为我可以轻松地将它们更改为 html 表以通过邮件发送

edit2:我想实现类似

SELECT INTO #MyTempTable1,#MyTempTable2,#MyTempTable3 FROM OPENROWSET('SQLNCLI', 'Server=SERVERNAME;Trusted_Connection=yes;', 'SET FMTONLY OFF; SET NOCOUNT ON; EXEC DBNAME.dbo.ALLPROCEDURESINONE') 

因此过程的第一个结果将存储在#MyTempTable1 第二个结果集将存储在#MyTempTable2 ...等...

【问题讨论】:

【参考方案1】:

您可以将一个存储过程的功能删除到另一个存储过程中。这取决于参数和重用的代码量。 例如

CREATE PROCEDURE SP1()
AS
BEGIN
  SP1 Your code here...
END

CREATE PROCEDURE SP2()
AS
BEGIN
  SP2 Your code here...
END

只需结合 2

CREATE PROCEDURE SP1()
AS
BEGIN
  SP1 Your code here...

  SP2 Your code here...
END

【讨论】:

我有 SELECT * INTO #MyTempTable1 FROM OPENROWSET('SQLNCLI', 'Server=SERVERNAME;Trusted_Connection=yes;', 'SET FMTONLY OFF; SET NOCOUNT ON; EXEC DBNAME.dbo.Sp1 ') 如何使用单个过程选择 INTO 多个临时表? __ 我已经编辑了问题 我相信 TSQL 只注意到多集存储过程中的第一个结果。你不能在存储过程中做插入吗? 我不知道。我非常感谢这些信息 :) 是的,我可以将程序代码放入工作中。这样就可以了 欢迎您,如果您真的想玩多集输出,可以考虑使用 CLR 或 C#。

以上是关于SQL存储过程多个结果到临时表中的主要内容,如果未能解决你的问题,请参考以下文章

动态 SQL 结果到 SQL 存储过程中的临时表中

具有动态结果的存储过程到临时表中

在存储过程中调用别的存储过程,把结果保存到临时表中

SQL临时表使用

为啥这个 SQL 存储过程需要创建一个临时表才能工作(返回结果)?

从返回多个结果集的存储过程中插入临时表