【问题标题】:SQL's stored procedure multiple result into temp tableSQL存储过程多个结果到临时表中
【发布时间】: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 ...等...

【问题讨论】:

    标签: sql-server


    【解决方案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#。
    猜你喜欢
    • 2010-10-14
    • 1970-01-01
    • 2021-01-10
    • 2012-05-30
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多