存储过程:
create or replace procedure insert_emp
(empid in number,
empname in varchar2,
empsal in number)
as
begin
insert into emp(empno,ename,sal) values(empid,empname,empsal);
end insert_emp;java代码:public class TestOracle { public static void main(String[] args) {
Connection conn = null;
CallableStatement cs = null;
String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
String name = "system";
String password = "123456";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url,name,password);
cs = conn.prepareCall("{call insert_emp(?,?,?)}");
cs.setInt(1, 30);
cs.setString(2, "Lucy");
cs.setInt(3, 4000);
cs.execute();
System.out.println("insert ok");
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
cs.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}错误提示:
java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00201: identifier 'INSERT_EMP' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored存储过程使用完全ok,为什么java调用就提示这样的错误,小弟刚涉及这方面知识,请大家帮我一下,如何解决,谢谢。
create or replace procedure insert_emp
(empid in number,
empname in varchar2,
empsal in number)
as
begin
insert into emp(empno,ename,sal) values(empid,empname,empsal);
end insert_emp;java代码:public class TestOracle { public static void main(String[] args) {
Connection conn = null;
CallableStatement cs = null;
String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
String name = "system";
String password = "123456";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url,name,password);
cs = conn.prepareCall("{call insert_emp(?,?,?)}");
cs.setInt(1, 30);
cs.setString(2, "Lucy");
cs.setInt(3, 4000);
cs.execute();
System.out.println("insert ok");
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
cs.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}错误提示:
java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00201: identifier 'INSERT_EMP' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored存储过程使用完全ok,为什么java调用就提示这样的错误,小弟刚涉及这方面知识,请大家帮我一下,如何解决,谢谢。
cs = conn.prepareCall("{call 用户模式名称.insert_emp(?,?,?)}");
或者你这里代码里面登录名改成你建存储过程的那个用户,猜你应该是用SCOTT、tiger的。改成scott、tiger试试看。
我是用system建的,你说的代码我程序里也有;
创建存储过程的用户和java连接数据库的用户不是同一个!
你用system用户登录,在sqlplus里面执行:
begin
insert_emp(1,'test',1);
end;
/
看看结果,怀疑你的存储过程根本就没有编译,system用户下默认好像没有emp表的,也许你建了或者我记错了。
怎么是用户不一样呢?