在java语言中调用存储函数

连接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语言中调用存储过程
下一篇闪回(flashback)
想对作者说点什么? 我来说一句

mysql存储过程和存储函数的示例

2012年04月27日 495KB 下载

没有更多推荐了,返回首页

关闭
关闭