SSMS 中的动态查询不是 运行
Dynamic Query Not Running in SSMS
我在动态查询中使用 LinkedServer 直接通过 SQL 服务器访问 IBM Informix 数据库。我无法弄清楚为什么动态查询没有在 ms sql 服务器中执行,而它在 informix 上完全正常。请指教我卡得很厉害
脚本:
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 >= '''+@VAR+''') as acd
INNER JOIN( SELECT * FROM tableB where active=''t'') AS r ON
r.resourceid=acd.resourceid '')'
**EXEC(@TSQL) -- GIVES ERROR.**
TSQL 的打印:
Error Print
问题出在以下部分:
INNER JOIN( SELECT * FROM tableB where active=''t'')
我添加了额外的单引号 ('
),例如 active = ''''t''''
。这解决了问题,它像铃声一样工作:)。谢谢大家
我在动态查询中使用 LinkedServer 直接通过 SQL 服务器访问 IBM Informix 数据库。我无法弄清楚为什么动态查询没有在 ms sql 服务器中执行,而它在 informix 上完全正常。请指教我卡得很厉害
脚本:
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 >= '''+@VAR+''') as acd
INNER JOIN( SELECT * FROM tableB where active=''t'') AS r ON
r.resourceid=acd.resourceid '')'
**EXEC(@TSQL) -- GIVES ERROR.**
TSQL 的打印:
Error Print
问题出在以下部分:
INNER JOIN( SELECT * FROM tableB where active=''t'')
我添加了额外的单引号 ('
),例如 active = ''''t''''
。这解决了问题,它像铃声一样工作:)。谢谢大家