将存储过程结果集放入表中 - 除INSERT INTO ... EXEC之外的任何快捷方式?

时间:2010-03-17 19:52:13

标签: sql-server-2005 tsql stored-procedures resultset

我正在创建一个临时表,它是存储过程结果集的结果。现在我正在使用create table语句,然后是insert into....exec

它完成了工作,但我很好奇是否有其他方法可以解决这个问题?我希望可以运行select into,并且存储过程的结果集服务于select语句的角色,这样我就不必事先编写一个create语句(这样如果存储过程的列更改了,不需要任何修改。)

如果有其他方法可以更好地满足我的需求,我很乐意听到它们。非常感谢。

2 个答案:

答案 0 :(得分:1)

有两种方法:Table variablesCTEs。每个都有好处,您的场景往往让我相信如果源数据很大,Temp Table是最佳选择。如果不是,我会倾向于CTE。

答案 1 :(得分:1)

一招:

SELECT * FROM OPENQUERY(ThisServerName, 'EXEC myDB.dbo.myStoredproc') 

存储过程不是表或视图,因此您不能指望像表或视图那样的记录集。 你评论“如果存储的proc列改变”是否忽略了这一事实:它不应该改变