2017-10-13 165 views
0

我在动态查询中使用LinkedServer以通过SQL Server直接访问IBM Informix DB。我无法弄清楚为什么动态查询不在ms sql server中执行,而在informix中完全正常。请告知我被卡住了。动态查询未在SSMS中运行

脚本:

DECLARE @TSQL varchar(8000), @VAR varchar(MAX) 
SELECT @VAR = '2017-10-13 00:00:00' 
SELECT @TSQL = 'SELECT * FROM OPENQUERY (MyLinkServer,''SELECT 
        ccd.transfer 
      FROM (SELECT * FROM tableA AS ac 
      WHERE ac.startdatetime >= '''[email protected]+''') as acd 
      INNER JOIN(SELECT * FROM tableB where active=''t'') AS r ON 
      r.resourceid=acd.resourceid '')' 


    **EXEC(@TSQL) -- GIVES ERROR.** 

TSQL的打印:

Error Print

+0

更改EXEC选择并检查输出。 –

+0

可能的重复[如何在SQL Server中单引号转义?](https://stackoverflow.com/questions/1586560/how-do-i-escape-a-single-quote-in-sql-server) – Liam

回答

0

的问题是在以下部分:

INNER JOIN(SELECT * FROM tableB where active=''t'') 

我添加了额外的单引号('),如active = ''''t''''。这解决了这个问题,它像一个钟声:)。谢谢大家