从存储的proc结果集中检索特定列到临时表

时间:2011-09-14 14:19:37

标签: sql-server

我有一个存储过程,它返回一个大约20列的结果集。我只对检索特定列(用户名)的所有行感兴趣。

这就是我所拥有的:

--create temp table
CREATE TABLE #USERNAMES(
username         char(10)
)

--store results in a temp table
INSERT INTO #USERNAMES
exec dbo.getAccountInfo @subbed = 1

这不会起作用,因为它想要将整个结果集存储到临时表中,但临时表没有定义它需要的所有列。如何修改插入内容以仅将username结果集中的getAccountInfo列插入临时表#USERNAMES

1 个答案:

答案 0 :(得分:2)

如果您创建一个环回链接服务器(请参阅我的答案:Retrieve column definition for stored procedure result set),您可以使用OPENQUERY,例如

INSERT #USERNAMES(username)
  SELECT username 
  FROM OPENQUERY(loopback, 'EXEC dbname.dbo.getAccountInfo @subbed = 1;');

注意:dbname在这里很重要!

当然,你总是可以复制存储过程,或者给它一个定义结果集形状的可选参数。