数据库错误:ORA-00911:无效字符

13 投票
1 回答
15250 浏览
提问于 2025-04-18 15:12

我有一段代码用来在Oracle数据库中执行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中执行相同的请求时,它是可以工作的。那么我到底哪里做错了呢?

1 个回答

36

删除分号:

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

撰写回答