在Java语言中访问存储过程和存储函数

一   引言: 

学习了怎么创建和使用存储过程和存储函数之后呢,我们来学习如何在Java环境下来访问Oracle的存储过程和存储函数了。 

在访问之前首先要导入oracle的驱动,导入的驱动在安装的oracle路径下的此目录下找:oracle\product\10.2.0\db_1\jdbc\lib\ojbc14.jar,好,这样,我们就有了oracle驱动,来建一个java类来测试吧! 

二  练练吧  -- 存储过程的调用!  

1.  首先要先载入驱动来和oracle数据库连接: 

private static Connection conn;   static {           try {               // 第一步:加载驱动               Class.forName("oracle.jdbc.driver.OracleDriver");               // 得到连接对象  test1是用户的名字               conn = DriverManager.getConnection(                       "jdbc:oracle:thin:@localhost:1521:orcl""test1""test1");           } catch (ClassNotFoundException e) {               // TODO Auto-generated catch block               e.printStackTrace();           } catch (SQLException e) {               // TODO Auto-generated catch block               e.printStackTrace();           }       }  

2.我们来调用第一种存储过程,存储过程的内容为: 

 create or replace procedure selectEmp(emp_no in number, ename out varchar2,job out varchar2 ,sal out number) is   begin     select ename,job,sal into ename,job,sal from emp where empno=emp_no;   end selectEmp;      在java中调用上面的存储过程,代码为:   public static void testprocedure() {           try {               // 创建callabStatement对象来调用存储过程 通过占位符传递的是intout的参数,               CallableStatement cas = conn                       .prepareCall("{call selectEmp(?,?,?,?)}");               // 从1开始               int index = 1;               // 为占位符赋值 输入参数赋值               cas.setInt(index++, 7369);               // 为输出参数赋值               cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.VARCHAR);               cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.VARCHAR);               cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.NUMBER);                  // 执行操作 返回的不是ResultSet 如果返回的是ResultSet 则为true,返回的是空则为false               boolean flag = cas.execute();                  System.out.println(flag);               // 判断               if (!flag) {                   // 获取值                   String ename = cas.getString(2);                   String job = cas.getString(3);                   int sal = cas.getInt(4);                   System.out.println(ename);                   System.out.println(job);                   System.out.println(sal);               }           } catch (SQLException e) {               // TODO Auto-generated catch block               e.printStackTrace();           }       }  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://127.0.0.1/wywyws.html