【问题标题】:DatabaseError: ORA-00911: invalid character数据库错误:ORA-00911:无效字符
【发布时间】:2014-09-20 23:52:52
【问题描述】:

我有以下代码在 Oracle db 中执行 sql 查询:

try:
    conn = cx_Oracle.connect(DB_LOGIN+"/"+DB_PWD+"@"+SID)
    cursor = connection.cursor()
    cursor.execute(sql)
    connection.commit()
    cursor.close()
    conn.close()
except cx_Oracle.DatabaseError, ex:
    error, = ex.args
    print 'Error.code =', error.code
    print 'Error.message =' , error.message
    print 'Error.offset =', error.offset
    conn.rollback()

我收到错误:DatabaseError: <cx_Orac...40066758>

为什么我在控制台中看不到完整的错误消息?看起来异常部分没有执行。 我在 linux 上使用 python 2.5 和 oracle 10.2.0。

更新:经过一番调查,我发现错误是DatabaseError: ORA-00911: invalid character

我的 sql 字符串是这样的:sql = "SELECT ID FROM TABLE WHERE DESC = '" + str(desc[0]) + "';"。这是生成的字符串:"SELECT ID FROM TABLE WHERE DESC = '3312';"

当我在 SQL Developer 中执行相同的请求时,它可以工作。那我做错了什么?

【问题讨论】:

  • 删除查询字符串中的尾随分号。 OCI 只需要您的查询.. 不需要终止符!

标签: python oracle cx-oracle


【解决方案1】:

删除分号:

sql = "SELECT ID FROM TABLE WHERE DESC  = '" + str(desc[0]) + "'"

【讨论】:

  • 真的很有帮助@Tedezed
  • 基本错误,我们在SQL编辑器中用分号测试,一直发生。
猜你喜欢
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 2014-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多