首页 > 解决方案 > TSQL Openquery 未创建临时表

问题描述

我有以下代码:

declare @cQuery      varchar(2000);
declare @cTSQL       varchar(2000);
declare @cLinkServer varchar(20);
declare @cTable      varchar(20);

set @cQuery = 'SELECT iln.product_nbr FROM axs.pub.ivc_line iln';
set @cLinkServer = 'RBDAX1';
set @cTable = '#tempInv';

if OBJECT_ID('tempdb..#tempInv') is not null
    drop table #tempInv

--SELECT * INTO #tempInv FROM OPENQUERY(RBDAX1,'SELECT iln.product_nbr FROM axs.pub.ivc_line iln');

set @cTSQL = 
    'SELECT * '
    + ' INTO #tempInv '
    + ' FROM OPENQUERY(RBDAX1,''SELECT iln.product_nbr FROM axs.pub.ivc_line iln'')'
    ;

exec ( @cTSQL );

当我调用 exec (@cTSQL); 临时表尚未创建。

当我运行注释掉的行时:

SELECT * 
INTO #tempInv 
FROM OPENQUERY(RBDAX1, 'SELECT iln.product_nbr FROM axs.pub.ivc_line iln');

临时表创建得很好。

我在这里想念什么?

标签: sql-servertsqlopenquery

解决方案


您不能以这种方式创建临时表。临时表已创建,但在查询结束的那一刻“消失”。您可以创建一个表并进行插入/选择。


推荐阅读