一尘不染

在 SQL Server 中创建存储过程的临时表最简单方法是什么?

sql-server

在处理 SQL Server 时,很多时候我需要编写类似以下的内容。

create table #table_name
(
    column1 int,
    column2 varchar(200)
    ...
)

insert into #table_name
execute some_stored_procedure;

但是创建一个具有精确语法的表作为存储过程的结果是一项乏味的任务。例如sp_helppublication的结果有 48 列!我想知道是否有任何简单的方法可以做到这一点。

谢谢。


阅读 175

收藏
2022-10-31

共1个答案

一尘不染

如果该过程只返回一个结果集并且启用了即席分布式查询选项。

SELECT * 
INTO #T 
FROM OPENROWSET('SQLNCLI', 
                'Server=(local)\MSSQL2008;Trusted_Connection=yes;',
                 'SET FMTONLY OFF;EXEC sp_who')

或者您可以设置一个环回链接服务器并使用它。

EXEC sp_addlinkedserver @server = 'LOCALSERVER',  @srvproduct = '',
                        @provider = 'SQLNCLI', @datasrc = @@servername

SELECT *
INTO  #T
FROM OPENQUERY(LOCALSERVER, 
               'SET FMTONLY OFF;
               EXEC sp_who')
2022-10-31