Oracle之SQL拼接常见错误

背景

编程语言:Python2.7.9

数据库:Oracle

数据库连接库:cx_Oracle

ORA-00911:无效字符

直接在plsql中运行的sql,通过拼接后python中执行报错。

最后检查发现是由于sql语句的末尾加了一个分号:;

去掉分号就好了。

ORA-01722:无效数字

这是由于拼接的时候漏了'导致的。

比如,原sql如下:

1
select * from table_1 where id = '1'

拼接代码如下:

1
2
id = '1'
sql = "select * from table_1 where id = " + id

这样就会报错了,正确的写法应该是:

1
2
id = '1'
sql = "select * from table_1 where id = '" + id + "'"

ORA-01747: user.table.column, table.column 或列说明无效

这也是出现在一次拼接错误中,错误语句如下:

1
2
3
4
5
6
7
sql = '''
update table_1
set
name = 'zheng',
age = 27,
where id = 1
'''

这里的age = 27后面对了一个,

总结

在开发中涉及sql语句拼接的时候,还是要多注意一点,尤其是';,以及参数等问题,报错的时候,先打印sql语句直接测试一下。