当前位置: 代码迷 >> Oracle开发 >> java调用oracle存储过程出错,求解
  详细解决方案

java调用oracle存储过程出错,求解

热度:87   发布时间:2016-04-24 06:35:19.0
java调用oracle存储过程报错,求解
pl/sql代码
create or replace procedure sp_pr07(spbookid in number,spbookname in varchar2,sppublishhouse in varchar2) is
begin
insert into book values(spbookid,spbookname,sppublishhouse);
end;

java代码
package com.sp;
import java.sql.*;

public class Test2 {


public static void main(String[] args) {

try {
 Class.forName("oracle.jdbc.driver.OracleDriver");
 Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@121.197.102.20:1521:BOOKSTORE","scott","oracle");
CallableStatement cs=ct.prepareCall("{call sp_pro7(?,?,?)}");
cs.setInt(1, 10);
cs.setString(2, "笑傲江湖");
cs.setString(3, "人民出版社");
cs.execute();
cs.close();
ct.close();
} catch (Exception e) {
e.printStackTrace();
}

}
}
报错
java.sql.SQLException: ORA-06550: 第 1 行, 第 7 列: 
PLS-00201: 必须声明标识符 'SP_PRO7'
ORA-06550: 第 1 行, 第 7 列: 
PL/SQL: Statement ignored

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:330)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:287)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:742)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:211)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:950)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1159)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3284)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3389)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4222)
at com.sp.Test2.main(Test2.java:16)

------解决思路----------------------
sp_pro7 在oracle中没有定义
检查是不是连错用户了,或是名字是不是拼写有问题
------解决思路----------------------
引用:

调用的时候写错了吧:
一个是:sp_pr07
一个是:sp_pro7

你再检查一下
  相关解决方案