我正在创建一个临时表,它是存储过程结果集的结果。现在我正在使用create table
语句,然后是insert into....exec
。
它完成了工作,但我很好奇是否有其他方法可以解决这个问题?我希望可以运行select into
,并且存储过程的结果集服务于select语句的角色,这样我就不必事先编写一个create语句(这样如果存储过程的列更改了,不需要任何修改。)
如果有其他方法可以更好地满足我的需求,我很乐意听到它们。非常感谢。
答案 0 :(得分:1)
有两种方法:Table variables和CTEs。每个都有好处,您的场景往往让我相信如果源数据很大,Temp Table是最佳选择。如果不是,我会倾向于CTE。
答案 1 :(得分:1)
一招:
SELECT * FROM OPENQUERY(ThisServerName, 'EXEC myDB.dbo.myStoredproc')
存储过程不是表或视图,因此您不能指望像表或视图那样的记录集。 你评论“如果存储的proc列改变”是否忽略了这一事实:它不应该改变