日期:2014-05-17  浏览次数:20921 次

如何将存储过程的结果存到表里面
在不知道 proc_A执行的结果返回哪些字段的情况下,如何将exec proc_A的结果存放到临时表#t里面去呢?
#t是尚未定义的临时表。
------最佳解决方案--------------------
此路不通 ,变通下吧.
------其他解决方案--------------------
恐怕还得更进一步.
即使你知道存储过程的查询结果,不知道这些结果的数据结构,你仍然不能把它保存到临时表里.
因为,你不知道各个列要用什么数据类型.
------其他解决方案--------------------
可以把存储过程改成表值函数 ,效果一样的。
------其他解决方案--------------------
一般的写法是先创建临时表#t,然后:
insert into #t
exec 存储过程名

但是你不知道存储过程的列的话,貌似没有办法创建表
------其他解决方案--------------------
楼上正解,没有办法使用
EXEC  ...   INTO    #TEMP
只能  Insert into  #TEMP  exec proc_A
所以先执行Proc_A 看返回结果,假如是系统Proc,联机丛书上使用执行完返回数据堆的结构的。
根据结果建临时表进行插入。
------其他解决方案--------------------
坐等大牛
------其他解决方案--------------------
引用:
可以把存储过程改成表值函数 ,效果一样的。

这个改动存储过程,会比较麻烦额...是想把所有存储过程查询出的数据,做一下权限控制,如果是一两个,对应用影响小的话,还可以考虑下。