본문 바로가기

프로그램/oracle

오라클에서 ref_cursor 과 sys_refcursor 사용하기

반응형

오라클에서 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로 된다고 해서 해보니 잘 됨.;

크흑.