在Java语言中访问存储过程和存储函数
在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对象来调用存储过程 通过占位符传递的是int和out的参数,
- 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();
- }
- }
|
评论暂时关闭