使用变量从 Open Query 将数据插入 table

Insert data into a table from Open Query with variable

我正在尝试使用 OPENQUERY 将一些数据提取到 table。这是我的代码的样子:

  DECLARE @TSQL VARCHAR(MAX)
  DECLARE @CD   VARCHAR(10) = 'XX'

  DECLARE @OracleData TABLE  (Cd VARCHAR(20), ApptDATE Datetime )
  
  INSERT INTO @OracleData(Cd,ApptDATE )

  SELECT  @TSQL = 'SELECT * FROM OPENQUERY(LinkedServer,''Select p.Cd, p.AppDate
                                                        from ta.table1 p 
                                                        where p.IdCode = ''''' + @CD + ''''''')'

  EXEC (@TSQL)

我最终遇到以下错误:

An INSERT statement cannot contain a SELECT statement that assigns values to a variable.

当我尝试 运行 没有 INSERTEXEC(@TSQL) 时,它就像一个魅力,但我无法插入。

有什么办法可以解决这个问题吗? 谢谢。

你做错了。

不要将 @TSQL 变量插入 table,设置变量,然后使用 INSERT...EXEC...

插入结果
DECLARE @TSQL nvarchar(max) = '
SELECT *
FROM OPENQUERY(LinkedServer,
  ''Select p.Cd, p.AppDate
    from ta.table1 p 
    where p.IdCode = ''''' + @CD + ''''''')
';

INSERT INTO @OracleData (Cd, ApptDATE)
EXEC (@TSQL);

我敢肯定有一个很好的理由让您不只是使用没有动态的直接链接服务器查询 SQL,但我想不出一个。