存储过程:
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调用就提示这样的错误,小弟刚涉及这方面知识,请大家帮我一下,如何解决,谢谢。
解决方案 »
- ORACLE XE提示无监听
- 本人在安装ORACLE 11g时遇到个问题:
- 关于数据缓存的问题-参与者有分
- 如何更改Oracle产品语言?
- 一个sql查询疑问
- 在Oracle817中想增加一个定时执行的任务:每隔1小时更新一个数据库用户信息。按照书本上的指示操作,但总提示出错信息。
- 转贴http://expert.csdn.net/Expert/topic/2260/2260745.xml?temp=.487179 散分
- sql语句执行效率问题!!!急急
- 请各位高手帮帮忙!oracle 6513是什么错?救急.
- oracle高手请进!!倒库的问题。在线等
- 求一sql语句查出1到100最大的一个数和最小的一个数。
- oracle 10g怎么安装成中文的?
cs = conn.prepareCall("{call 用户模式名称.insert_emp(?,?,?)}");
或者你这里代码里面登录名改成你建存储过程的那个用户,猜你应该是用SCOTT、tiger的。改成scott、tiger试试看。
我是用system建的,你说的代码我程序里也有;
创建存储过程的用户和java连接数据库的用户不是同一个!
你用system用户登录,在sqlplus里面执行:
begin
insert_emp(1,'test',1);
end;
/
看看结果,怀疑你的存储过程根本就没有编译,system用户下默认好像没有emp表的,也许你建了或者我记错了。
怎么是用户不一样呢?