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


一   引言: 

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

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

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

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

  1. private static Connection conn;  
  2. static {  
  3.         try {  
  4.             // 第一步:加载驱动  
  5.             Class.forName("oracle.jdbc.driver.OracleDriver");  
  6.             // 得到连接对象  test1是用户的名字  
  7.             conn = DriverManager.getConnection(  
  8.                     "jdbc:oracle:thin:@localhost:1521:orcl""test1""test1");  
  9.         } catch (ClassNotFoundException e) {  
  10.             // TODO Auto-generated catch block  
  11.             e.printStackTrace();  
  12.         } catch (SQLException e) {  
  13.             // TODO Auto-generated catch block  
  14.             e.printStackTrace();  
  15.         }  
  16.     }  

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

  1.  create or replace procedure selectEmp(emp_no in number, ename out varchar2,job out varchar2 ,sal out number) is  
  2. begin  
  3.   select ename,job,sal into ename,job,sal from emp where empno=emp_no;  
  4. end selectEmp;  
  5.   
  6. 在java中调用上面的存储过程,代码为:  
  7. public static void testprocedure() {  
  8.         try {  
  9.             // 创建callabStatement对象来调用存储过程 通过占位符传递的是intout的参数,  
  10.             CallableStatement cas = conn  
  11.                     .prepareCall("{call selectEmp(?,?,?,?)}");  
  12.             // 从1开始  
  13.             int index = 1;  
  14.             // 为占位符赋值 输入参数赋值  
  15.             cas.setInt(index++, 7369);  
  16.             // 为输出参数赋值  
  17.             cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.VARCHAR);  
  18.             cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.VARCHAR);  
  19.             cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.NUMBER);  
  20.   
  21.             // 执行操作 返回的不是ResultSet 如果返回的是ResultSet 则为true,返回的是空则为false  
  22.             boolean flag = cas.execute();  
  23.   
  24.             System.out.println(flag);  
  25.             // 判断  
  26.             if (!flag) {  
  27.                 // 获取值  
  28.                 String ename = cas.getString(2);  
  29.                 String job = cas.getString(3);  
  30.                 int sal = cas.getInt(4);  
  31.                 System.out.println(ename);  
  32.                 System.out.println(job);  
  33.                 System.out.println(sal);  
  34.             }  
  35.         } catch (SQLException e) {  
  36.             // TODO Auto-generated catch block  
  37.             e.printStackTrace();  
  38.         }  
  39.     }  
  • 1
  • 2
  • 3
  • 下一页

相关内容