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存储过程多个结果到临时表中的主要内容,如果未能解决你的问题,请参考以下文章