EXEC 和 Select Into 可以一起工作吗?

Could EXEC and Select Into work together?

我运行正在执行以下语句以从远程服务器获取结果

EXEC  ( @var)  AT [linkedservername] 

注意: @var 在链接服务器上保存 select 对 运行 的查询。 Linkedserver 是 DB2 服务器。

我想将结果保存到模板中。

可能吗?

我们可以像下面这样实现吗?

EXEC  ( @var)  AT [linkedservername]  into #t

-- 更新提供者更多信息。

我想到了这个,

read query from file.

execute it in desired DB2 server using linked server.

now i need to save it in a temptable

DECLARE @FileContents  VARCHAR(MAX)

SELECT @FileContents=BulkColumn
FROM   OPENROWSET(BULK'E:\ADDRESS.txt',SINGLE_BLOB) x;

set @FileContents = Replace(@FileContents,'''''','''')

set @FileContents = @FileContents + ' FETCH FIRST 1 ROWS only'

EXEC    ( @FileContents)  AT [linkedservername]   

我需要下面这样的东西,

select * from (
    EXEC    ( @FileContents)  AT [linkedservername]   )

更新了新信息。

对于您尝试这样做的方式,答案是否定的。 如果您已经知道结构,请先创建临时 table。您可能必须更改 RPC 和 DTC 设置才能使调用正常工作。

CREATE TABLE #temp
(<Table definition for your results>)

DECLARE @var VARCHAR(100)= 'your command'

INSERT INTO #temp EXEC (@var) AT TRANSACCOUNT

SELECT * FROM #temp

如果您不知道该结构,您可以使用 OPENROWSET 或 OPENQUERY 即时生成 table。

打开查询:

SELECT  * 
INTO #temp FROM    
OPENQUERY(targetServer, 'your command')

打开行集:

SELECT  * INTO
  #temp
FROM
  OPENROWSET(
    'SQLNCLI',
    'Server=targetServer;Trusted_Connection=yes;',
    'your command'
)
SELECT * FROM #temp

OPENQUERY 和 OPENROWSET 需要字符串文字,因此如果您需要动态设置基本命令,则还需要构建 OPENROWSET 调用。调用的上下文也会更改任何临时 table 的上下文,因此您可以使用 临时 永久 table 来存储您的结果,如下所示:

DECLARE @var VARCHAR(100)= 'your command'
DECLARE @command VARCHAR(MAX)

SELECT @command = CONCAT(
'SELECT  * INTO  temporaryTable
FROM
  OPENROWSET(
    ''SQLNCLI'',
    ''Server=targetServer;Trusted_Connection=yes;'',
    ''', @var,'''
)')
EXEC (@command)
SELECT * FROM temporaryTable