关闭

在java语言中调用存储函数

标签: 存储java语言functionoraclejdbc
1196人阅读 评论(0) 收藏 举报
连接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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:396178次
    • 积分:5878
    • 等级:
    • 排名:第4301名
    • 原创:210篇
    • 转载:15篇
    • 译文:0篇
    • 评论:38条
    文章分类
    最新评论