오라클에서 ref_cursor 과 sys_refcursor 사용하기
ref_cursor 은 9i 이전에 사용
자바 단으로 procedure 의 out이나 function 의 return 값으로
cursor 을 보내기 위해 사용
1.
package 에 선언
- package에 선언하면 전역으로 사용할 수 있으므로 이렇게 하는듯.
create or replace package
is
type test_ref_cursor is ref_cursor;
end;
2.
procedure 에서 사용
create or replace test_prc(o_cursor out test_ref_cursor)
is
begin
open o_cursor for select cstm_nm from customer;
end;
3.
이를 java에서 호출하고 callablestatement 에서 out 인자를 oracle의 cursor타입으로 선언한 후
resultset으로 받음
(요건 테스트 못해봄)
sys_refcursor
1.
이건 그냥 선언하면 됨
create or replace test_prc(o_cursor out sys_refcursor)
is
begin
open o_cursor for select '이승구' as str from dual;
end;
2.
이를 java에서 호출하고 callablestatement 에서 out 인자를 oracle의 cursor타입으로 선언한 후
resultset으로 받음
소스
con = ConnectionManager.getConnection();
cs=con.prepareCall("call test03(?)");
cs.registerOutParameter(1, OracleTypes.CURSOR);
cs.execute();
rs=(ResultSet) cs.getObject(1);
while(rs.next()) {
System.out.println("name:"+rs.getString("nm"));
}
기존에는 oraclecallableStatement 로 변환하는 작업이 있었는데 getObject로 된다고 해서 해보니 잘 됨.;
크흑.