连接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));
}
}
在java语言中调用存储函数
最新推荐文章于 2021-03-15 18:06:00 发布