PL/SQL 커서 관련 질문드립니다. 0 2 1,817

by 로그 [PL/SQL] 프로시저 Procedure 커서 Cursor [2023.02.08 15:05:57]


안녕하세요.

커서를 사용 후에 CLOSE를 안해주면, 나중에 최대 열기 커서 수 초과 오류가 나오는 것으로 알고 있습니다.

저희 회사내에서 프로시저를 이용해서 OUT  SYS_REFCURSOR를 통해 정보를 가져오는 부분이 많은데,

아래 코드처럼 따로 CLOSE를 하는 부분이 없는데,

 

어떠한 부분에서 자동으로 커서가 Close 되는지 궁금합니다.. ㅠㅠ

Transaction이 종료될 때 자동으로 열려있는 커서가 닫히는 걸로 이해하면 될까요??

아니면, 프로시저 안에서 커서를 사용하면 자동으로 Close가 되는 걸로 이해하면 될까요??

 

ex) OPEN FOR 문을 이용하여 커서의 내용을 조회 후 반환

CREATE OR REPLACE PROCEDURE 프로시저명 (
    p_cursor OUT SYS_REFCURSOR
)
BEGIN
    
    OPEN p_cursor FOR
        SELECT 컬럼명, ..
        FROM 테이블명;
    
END 프로시저명;

 

by 마농 [2023.02.08 15:16:16]

해당 프로시저를 호출하는 쪽에서 사용 후 닫아주면 될 듯 합니다.


by 로그 [2023.02.08 15:53:26]

아아  백엔드 서버로 Java, Spring, MyBatis를 사용하고 있었는데

자동으로 트랜잭션 종료시 열려있는 모든 커서 닫게끔 프레임워크가 해주고 있었던 것 같아요!

댓글 감사합니다!

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