下面的调用存储过程,执行的时候程序停留了,怎么让我输入啊?哪儿错了?import java.sql.*;public class Testpro1 { public static void main(String[] args) {
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:myora1", "scott", "tiger");
CallableStatement c = conn.prepareCall("{call my_sp1(?,?)}");
c.setString(1, "SCOTT");
c.setInt(2, 3000);
c.execute();
c.close();
conn.close();
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
}
}
在pl/sql developer 里面执行my_sp1('SCOTT',3000);是正常的。
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:myora1", "scott", "tiger");
CallableStatement c = conn.prepareCall("{call my_sp1(?,?)}");
c.setString(1, "SCOTT");
c.setInt(2, 3000);
c.execute();
c.close();
conn.close();
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
}
}
在pl/sql developer 里面执行my_sp1('SCOTT',3000);是正常的。
http://www.eygle.com/digest/2008/05/java_oracle_procedure.html
存储过程里面的dml语句都要手动commit吗?求解
create or replace procedure my_sp1(v_ename varchar2,v_sal number) is
begin
update pme set sal=v_sal where ename=v_ename;
commit;--这里起初没commit
end;
你的java应用程序没有使用事务进行手动控制,所以你必须在你的数据库里使用显示提交。