近期,有一个批量插入的sql,突然报出错误“ORA-01745: invalid host/bind variable name(无效的主机/绑定变量名称错误)”。 字面意思排查,可能原因是:使用了保留字、多余或者缺少冒号或者逗号等等语句的问题。
经过仔细核对和测试,单条插入都可以正常执行,所以考虑是不是条数太多的问题。所以临时将插入操作改为批次执行,暂时解决了问题。
那么,真相到底是怎样呢?
后来经过查阅资料,发现根本原因是由于sql语句包含了太多的“?”(占位符),超出了Oracle的限制。经过验证,当占位符数量超过65536时,就会报出异常。