1)利用SQL*Plus在Oracle9i数据库内建立新的预存程序(stored procedure) SQL> CREATE PROCEDURE update_salary 2 (v_empno IN NUMBER,v_sal IN NUMBER) 3 4 IS 5 BEGIN 6 UPDATE emp 7 SET sal = v_sal 8 WHERE empno=v_empno; 9 END; 10 / 过程已创建。 2)建立TestCallable.java文件 import java.sql.*; public class TestCallable { public static void main(String args[]) throws SQLException { //注册Oracle JDBC驱动程序 DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); //建立数据库连接 Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:myoracle","scott","tiger"); //建立CallableStatement对象,并调用update_salary预存程序 CallableStatement cstmt=conn.prepareCall("{call update_salary(?,?)}"); //设置第一个传入参数是7788 cstmt.setInt(1,7788); cstmt.setInt(2,6000); //员工编号为7788的薪资将会被更改为6000元 try { //执行CallableStatement cstmt.execute(); System.out.println("Procedure successfully executed."); }catch(SQLException e) { e.printStackTrace(); } cstmt.close(); conn.close(); } } 3)查询emp表格数据 SELECT * FROM EMP; 7788 SCOTT ANALYST 7566 19-4月 -87 3000 20 4)编辑运行TestCallable.java C:jdev9052jdkbinjavaw.exe -ojvm -classpath C:jdexamExercise3classes;C:jdev9052jdbclibclasses12.jar;C:jdev9052jdbclibnls_charset12.jar;C:jdev9052jdevlibjdev-rt.jar TestCallable Procedure successfully executed. Process exited with exit code 0. 5)确定预存程序的运行结果 SELECT * FROM EMP; 7788 SCOTT ANALYST 7566 19-4月 -87 6000 20 |