【问题标题】:retrieve a specific column from a stored proc result set into a temp table将存储的 proc 结果集中的特定列检索到临时表中
【发布时间】:2011-09-14 22:24:42
【问题描述】:

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

这是我所拥有的:

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

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

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

【问题讨论】:

    标签: sql-server


    【解决方案1】:

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

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

    注意:dbname 在这里很重要!

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

    【讨论】:

    • 我无法创建环回链接服务器。但是,当您按照您的建议将可选参数指示符传递给 proc 时,我刚刚创建了一个备用结果集,其中仅包括我想要的列。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 2011-11-14
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多