본문 바로가기

프로그램/java

CallableStatement 를 이용하여 oracle procedure 수행하기

반응형

목적

CallableStatement 를 이용하여 oracle procedure 수행


정의

output parameter 가 cursor 형 의 경우에는 procedure 에서 sys_refcursor 을 사용하였음

java에선 getObject를 이용하여 cursor를 resultSet 으로 변환하였음


소스

parameter 없는 경우

con = ConnectionManager.getConnection();

cs=con.prepareCall("call test01()");

cs.executeUpdate();


in out parameter가 존재하는 경우

con = ConnectionManager.getConnection();

cs=con.prepareCall("call test02(?, ?, ?, ?)");

cs.setString(1, "3");

cs.setString(2, "7");

cs.registerOutParameter(3, java.sql.Types.NUMERIC);

cs.registerOutParameter(4, java.sql.Types.VARCHAR);

cs.execute();

System.out.println("3:"+cs.getString(3));

System.out.println("4:"+cs.getString(4));


out parameter가 cursor일 경우

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"));

}


cursor 반환 procedure 샘플

create or replace procedure test03(

    o_list out sys_refcursor

)

is


begin

    open o_list for 

        select '이승구' AS nm from dual

        union all

        select '호랭이' AS nm from dual 

        union all

        select '얼록이' AS nm from dual        

        union all

        select '꺼이꺼이' AS nm from dual

    ;

end;