选择* into exec命令不起作用?

时间:2014-07-21 09:44:56

标签: sql sql-server sql-server-2008 tsql

我使用OPENROWSET命令来执行查询。

我希望结果值必须插入到临时表中,如

SELECT * INTO #TempTable EXEC @query

但显示错误

  

对象或列名称缺失或为空。对于SELECT INTO语句,请验证每列是否具有名称。对于其他语句,请查找空别名。别名定义为""或[]是不允许的。将别名更改为有效名称。

有谁能告诉我如何执行查询并插入临时表?

示例代码是

declare @Query nvarchar(max)
SET @Query ='SELECT 
                *
            FROM
                OPENROWSET
                (
                        ''SQLNCLI'',
                        ''servername'';
                        ''db'';
                        ''pwd'',
                        ''set nocount on;
                        set fmtonly off;
                        exec databaseName.dbo.spname ''''param1 '''',''''param2'''',''''param3'''',''''param3''''  ''
                )
                '

select * into #temp exec sp_executesql @Query

1 个答案:

答案 0 :(得分:1)

您必须使用以下格式:

DECLARE @T TABLE(Col1 int, col2 ...)

INSERT INTO @T
EXEC query

SELECT * FROM @T

例如:

DECLARE @T TABLE(name NVARCHAR(100),minimum INT, maximum INT, configvalue INT, runvalue INT)

INSERT INTO @T
EXEC sys.sp_configure

SELECT * FROM @T
WHERE runvalue=1