【存储过程】在java语言中调用存储函数

来源:互联网 发布:淘宝店铺运营包含哪些 编辑:程序博客网 时间:2024/05/21 09:49
连接oracle数据库  private static Connection conn;      static{          //第一步:加载驱动              try {                  Class.forName("oracle.jdbc.driver.OracleDriver");                  //得到连接对象        conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","scott");              } catch (ClassNotFoundException e) {                  // TODO Auto-generated catch block                  e.printStackTrace();              } catch (SQLException e) {                  // TODO Auto-generated catch block                  e.printStackTrace();              }      }  实例一:  【  create or replace function sumSal(emp_no number)--function(参数的值  必须有类型)  --返回值类型  return number--必须有返回值  as  --声明变量  emp_sal emp.sal%type;  emp_comm emp.comm%type;  total emp.sal%type;  begin    select sal,comm into emp_sal,emp_comm from emp where empno=emp_no;    total:=emp_sal*12+nvl(emp_comm,0);    return total;--必须返回  返回值类型一定相同  end;  】  public static void functionTest1() throws SQLException{          //mypackage 存储函数          CallableStatement cas=conn.prepareCall("{?=call sumSal(?)}");          //从1开始          int index = 1;          cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.NUMBER);          //为占位符赋值          cas.setInt(index++,7369);          boolean flag=cas.execute();          System.out.println(flag);          System.out.println(cas.getInt(1));      }  实例二:  【  通过包结构创建存储函数  create or replace package mypackage is    type empc1 is ref cursor;    function queryEmps return empc1;  end mypackage;  包体  create or replace package body mypackage is  function queryEmps return empc1 is    emp_c1 empc1;    begin      open emp_c1 for select * from emp;      return emp_c1;    end;    end mypackage;  】      public static void functionTest2() throws SQLException{          //mypackage 存储函数          CallableStatement cas=conn.prepareCall("{?=call mypackage.queryEmps}");          //从1开始          int index = 1;          cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.CURSOR);          boolean flag=cas.execute();          System.out.println(flag);          //调用里边的getCursor方法 返回的是ResultSet结果集          ResultSet rs = ((OracleCallableStatement)cas).getCursor(1);          while(rs.next()){              System.out.println(rs.getInt(1));          }      }  
0 0
原创粉丝点击