使用OPENQUERY更新Progress数据库时报错:语法错误靠近'B'
错误原因及解决方案
错误出在单引号的嵌套使用上:
- OPENQUERY的第二个参数是用单引号包裹的SQL语句,而语句里
wtype='B'的单引号会和外层的单引号提前闭合,导致SQL解析器误判语法结构,抛出"Incorrect syntax near 'B'"的错误。
修正后的语句
在SQL中嵌套单引号时,需要用两个连续的单引号''来转义单个单引号,修正后的语句如下:
UPDATE OPENQUERY(PROGRESSDB,'SELECT * FROM PUB.workitem where act_emp= 73870 and wtype=''B''') SET start_time='81410',logonstat = '1',realstrttme ='81410'
补充说明
当需要在被单引号包裹的SQL字符串内部表示单引号时,必须使用双单引号的写法,这样SQL解析器才能正确识别内层字符串的边界,避免语法冲突。
内容的提问来源于stack exchange,提问作者Dnyati
相关产品推荐
相关产品推荐

