四年多没有搞数据库了,前几天项目需要,折腾了下orcl,结果遇到一个奇葩的问题:
把sql字符串拷贝到pl/sql里面执行,都能执行成功;放在程序里面,连接数据库进行执行就老是报执行失败,说是sqlcmd有错误;
开始一直觉得是权限的问题,毕竟select没有修改表操作,update/delete/insert都是会修改表数据的;
但是检查账户已经是dba权限了,而且同一个账户在pl/sql里面执行又是成功的; 折腾了一下午,最后发现是坑爹的 分号惹的祸.....
(1) sql ="select * from test;"
(2) sql ="update test set name='1';"
(3) sql ="insert test set name='1';"
上面 三条语句放到 pl/sql里面执行都是成功的,但是放到程序里面就只有(1)能成功;
改成下面这样,放程序里面也能执行成功了:
(2) sql = "update test set name='1'"
(3) sql ="insert test set name='1'"