오라클 프로시저에서 커서반환관련 문의드립니다. 0 5 1,731

by 진진진 [PL/SQL] 오라클 프로시저 ref cursor java [2019.02.07 17:23:44]


오라클 프로시저에서 커서를 반환코자 합니다. 

 

다음과 같은 예제입니다. 

create or replace procedure test_proc (

    t_num     IN      number

   , t_cursor  OUT   SYS_REFCURSOR 

 

cursor 가 out 파라미터로 반환을 하다 보니 

프로시저내에서 cursor close 를 못하고 있습니다. 

 

java 코드단에서 호출하는 프로시저이다 보니 호출하는 쪽에서도 close 를 못하는데요. 

이 경우 close 를 하지 않아도 메모리 등의 이슈가 없는지요 ? 

 

 

 

by 오늘도배워가는 [2019.02.08 16:14:25]

저역시 배우러 종종 옵니다만 답변이 없어 몇글자 적고 갑니다. 

프로시저 내에서 Close를 하는 경우는 Cursor를 오픈하여 loop 처리 같은 작업 후에 수행합니다. 

close 를 못하신다는 말씀이 애매하여 사용하시는 프로시저를 간략히 올려주시면 도움이 될듯 합니다. 

또한, java 에서 역시 어떻게 호출하시는지 궁금합니다. 근래의 Framework를 사용하시면 특별히 Close에 신경을 쓰지 않으셔도 될 듯 합니다.


by 진진진 [2019.02.12 14:55:19]

프로시저에서 cursor 을 close 하게 되면 

해당 프로시저를 호출한 자바 소스에서는 SQL Exception( Cursor is closed)이 발생합니다. 

 

해당 데이터를 반환하는 것이 목적이기 때문에 

cursor 를 close 할 수 없다고 말씀드렸습니다. ^^


by 우리집아찌 [2019.02.08 17:03:31]

답변이 될런지 모르겠네요.

https://community.oracle.com/docs/DOC-915270


by 진진진 [2019.02.12 14:56:43]

예 저도 인터넷에서 해당글을 보긴했는데요 

refcursor 의 경우는 한번 조회하면 자동으로 close 되는 것과 같다고 이해하면 될까요 ? 

혹시라도 메모리릭이 발생할까봐 

확인차 문의드립니다. 


by 우리집아찌 [2019.02.12 15:03:22]

일단 그렇게 보시는게 맞는듯합니다.

두번째 조회에는 아예 찾지를 못하네요.

다른분이 자세히 설명해주 주실겁니다.

-----------------------------------------------------

아.. 전에 써본적이 있었는데..

연락없는거 보니 괜찮은가 봅니다. ^^*

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입