我有一个存储过程,它通过动态数据透视表为我提供数据,我想将这些数据插入到一个表中,该表包含所有可能的列,动态数据透镜可以生成。
示例:
动态数据透视存储过程提供了下表:
Property_A Property_C
----------------------
Value_A Value_A
Value_B Value_C
...
在另一次运行中,相同的SP可能会产生
Property_A Property_B
----------------------
Value_D Value_A
...
无论它返回什么,结果都应该放在像这样的表中
Property_A Property_B Property_C
----------------------------------
Value_A NULL Value_A
Value_B NULL Value_C
Value_D Value_A NULL
等等。
如何通过SQL(MS SQL Server)或更好的SSIS实现这一目标?
提前致谢,
tombom
答案 0 :(得分:1)
如果调用进程不知道结果中的列是什么,这有点棘手。要插入表(永久或临时),插入的列数必须与要插入的列数相匹配。
以下是将SP的结果插入表格的方法。请注意,您不必在表中包含所有列。但是,在我的示例中,usp_MakeDate_1返回三列中的两列(Property_A,Property_C),usp_MakeData_2返回一组两个不同的列(Property_A,Property_B)。
INSERT INTO MyResults (Property_A, Property_C)
EXEC dbo.usp_MakeData_1
INSERT INTO MyResults (Property_A, Property_B)
EXEC dbo.usp_MakeData_2
在动态SQL方面,您会发现SSIS的限制性更强。在大多数情况下,您的输出和输入必须在设计时知道。
答案 1 :(得分:0)
SELECT
*
INTO
MyNewTable
FROM
TempTableProducedByStoredProc