我有一个存储过程,它返回一个大约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
?
答案 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在这里很重要!
当然,你总是可以复制存储过程,或者给它一个定义结果集形状的可选参数。