2014-10-08 44 views
0

我有一个返回4个结果集的存储过程。结果集有很多列。从存储过程的第n个结果集创建表

从每个结果集中创建表的最佳方法是什么?表中的数据类型和模式应该与结果集中的数据类型和模式相同。

我知道我能做到这一点,以创建一个选择表:

CREATE TABLE TABLE_NAME 
    AS SELECT * FROM USERS 

那么,有没有办法选择一个存储过程执行的结果集?

+0

我不知道回答你的问题是什么(这就是为什么我要评论),但这是我收藏了很长时间[可以帮助。](http://stackoverflow.com/questions/209383/select-columns-from-result-set-of-stored-procedure) – AdamMc331 2014-10-08 17:18:36

+1

你不能做一个'select into'吗?如果你只是从sproc中取回表对象,你可能会做一个'select * into @ newtable from @ returnedsproctable' – paqogomez 2014-10-08 17:22:16

+0

我应该提到我知道旁边没有t-sql。我不知道如何从sproc中选择单个结果集。 – 2014-10-08 17:23:59

回答

1

虽然这主要是在聊天中进行的,但对于其他可能想知道同样事情的人来说,它仍应该有一个答案。

访问多个结果集中的特定结果集并在T-SQL的上下文中访问特定结果集的唯一方法是通过SQLCLR。使用C#,VB.Net或任何.Net语言,您可以使用可以分别访问结果集的SqlDataReader

的SQLCLR PROC将简单地执行的是现有的T-SQL proc和可以吐出一个结果集(假设输入PARAM将指定要返回的结果集的哪一个)可以做一个单独的连接和直接调用INSERT语句来同时完成所有4个操作(尽管在这一点上它可能也是一个控制台应用程序或Windows窗体或其他)。