1.问题
Java语言实现使用JDBC调用Oracle的存储过程时报了异常,如下所示:
Exception in thread "main" java.sql.SQLException: ORA-06550: 第 1 行, 第 7 列:
PLS-00201: 必须声明标识符 'FINDINFO'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
………………省略………………
百度了很多资料,有说参数不对的,也有说命名不对的,还有说是存储过程写得不对的,尝试了个边,都没有解决问题。
2.分析
最后在一个帖子上说是权限问题(虽然它的解决方法不适用于我这里),它的解决方法是:
===>> grant execute on findinfo to SCOTT ;
说明:
(1)findinfo:是我的过程函数名;
(2)SCOTT:是我从java连接oracle的用户;而创建该存储过程的用户是SYS。
3.解决方法
有了这个思路,就顺着这个可能是问题的根源追查下去,于是查到,可以在调用的存储过程前面加上该连接用户的名称。部分代码如下: