我需要您的支持才能提出解决方案。
我有 10 组不同的存储过程,我必须将它们导出到文本文件中,所有 10 个过程都将返回相同的列集(只有调用参数不同)。
我没有得到解决方案怎么办?
您能否帮助我了解如何将数据从存储过程输出导出到制表符分隔的文本文件?
如果可能的话,也可以在 SSIS 包中告诉我。
谢谢
我需要您的支持才能提出解决方案。
我有 10 组不同的存储过程,我必须将它们导出到文本文件中,所有 10 个过程都将返回相同的列集(只有调用参数不同)。
我没有得到解决方案怎么办?
您能否帮助我了解如何将数据从存储过程输出导出到制表符分隔的文本文件?
如果可能的话,也可以在 SSIS 包中告诉我。
谢谢
这里的简单解决方案。
对于每个 SP:
最后,在记事本中打开每个文件并简单地连接结果。
编辑
如果您有例如 10 个存储过程,您可以执行以下操作:
为输出创建临时表
CREATE TABLE #output (...)
使用 10INSERT...EXEC
填充临时表
INSERT INTO #output EXEC MySP1 ...
GO
INSERT INTO #output EXEC MySP2 ...
GO
INSERT INTO #output EXEC MySP3 ...
GO
...
INSERT INTO #output EXEC MySP10 ...
GO
执行查询SELECT * FROM #output
编辑 2
如果您希望在输出临时表中包含数据来自(哪个 SP)的信息,您可以向您的 SP 添加另一列,以便对 INSERT...EXEC 语句进行一些控制。
如果您希望这样做但无法控制 SP 输出,一种方法是控制默认值,#output
另一种方法是为中间结果添加另一个临时表。我会使用第二个:
为输出创建临时表,例如您的表名作为标识符。
CREATE TABLE #output (spname sysname, ...)
为中间结果创建临时表
CREATE TABLE #temp (...)
使用 10INSERT...EXEC
填充中间然后输出表
TRUNCATE TABLE #temp
INSERT INTO #temp EXEC MySP1 ...
GO
INSERT INTO #output
SELECT spname = 'MySP1', * FROM #temp
GO
TRUNCATE TABLE #temp
INSERT INTO #temp EXEC MySP2 ...
GO
INSERT INTO #output
SELECT spname = 'MySP2', * FROM #temp
GO
...
执行查询SELECT * FROM #output