1.在oracle中创建存储过程,语句如下:
create procedure params_emp
(in_ename in varchar2,in_sal in number) --in_ename表示是输入参数,员工姓名;in_sal输入参数,员工工资
is
begin
update emp set sal=in_sal where ename=in_ename;
end;
java调用存储过程代码如下:
package test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class CallStatementTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection conn = null;
CallableStatement cs = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL", "SCOTT", "tiger");
cs = conn.prepareCall("{call params_emp(?,?)}");
cs.setString(1, "FORD");
cs.setFloat(2, 7777f);
cs.execute();
System.out.println("执行了……");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
cs.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
【需要特别注意】如果在数据库中测试的时候,没有commit,那么在执行上面这段java代码的时候,就一直停在那里,也就是说程序在执行,但是在等待数据库中前面做的操作的提交(commit)