oracle的控制结构(三)
---------------------------------------------------------------------
例子3):有返回值的存储过程(列表[结果集])
编写一个过程,可以输入部门的编号,返回该部门所有的员工信息
--由于oracle存储过程没有返回值,它的所有返回值都是通过out
--参数来代替,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用package www.2cto.com
---------------------------------------------------------------------
--第一部分,建一个包,定义了一个游标类型test_cursor
SQL>create or replace package testPackage as type test_cursor(游标名) is ref cursor(游标)
end testPackage
--第二部分,创建过程
SQL>create or replace procedure p7(bianHao in number,p_cursor out testPackage.test_cursor) is
begin
--打开一个游标
open p_cursor for select * from emp where deptno = bianHao;
end;
/
---------------------------------------------------------------------
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:
CallableStatement cs = ct.prepareCall("{call p7( , )}");
//给第一个?赋值
cs.setInt(1,8888);
//给第二个?赋值
cs.registOutPrameter(2,oracle.jdbc.OracleTypes.CURSOR);
www.2cto.com
//执行
cs.execute();
//得到结果集
ResultSet rs = (ResultSet) cs.getObject(2);
while(rs.next()){
System.out.println(rs.getInt(1) + "--" + rs.getString(2));
}
//关闭相关资源,此处略写
作者 chunqiuwei