You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

cx_Oracle执行SQL报ORA-00933命令未正确结束如何解决

问题原因
  • SQL字符串拼接遗漏空格:多行字符串拼接时相邻片段没有预留空格,拼接后的SQL会出现SOME.DATABASEWHERE、:tc)AND这类语法错误的片段,这是触发ORA-00933 SQL command not properly ended报错的直接原因。
  • 绑定变量添加了多余单引号:cx_Oracle的绑定变量机制会自动处理数据类型和引号包裹,不需要手动给传入的参数值加单引号。你当前定义vary = "'Y'"、tempCheck = "'%{0}/%'".format(checkerAR)时额外加的单引号会被作为值的一部分传入SQL,最终导致查询结果不符合预期,属于逻辑错误。
修正后代码
import cx_Oracle

vary = "Y" # 移除多余的单引号
dsn_tns = cx_Oracle.makedsn(hostName, port,
                            service_name=serviceName) 
conn = cx_Oracle.connect(user=usr, password=__pswrd,
                         dsn=dsn_tns) 

c = conn.cursor()  

tempCheck = "%{0}/%".format(checkerAR) # 移除多余的单引号
# 每个SQL片段末尾加空格避免拼接后语法错误
statmentApp = 'SELECT TITLE,APP_URL from SOME.DATABASE ' \
              'WHERE UPPER(APP_URL) LIKE UPPER(:tc) ' \
              'AND ACTIVE_FLAG = :y'
c.execute(statmentApp, tc = tempCheck , y = vary)

内容的提问来源于stack exchange,提问作者Glenville Pecor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:24:03