`CLOSE` — 커서 닫기
CLOSE — 커서 닫기
커서(cursor)로 결과를 다 읽고 나면, 그 커서가 붙잡고 있던 리소스를 정리해줘야 해요. 그럴 때 쓰는 명령이 바로 CLOSE예요. 더 이상 쓰지 않는 커서는 명시적으로 닫아서 메모리와 기타 리소스를 돌려주는 게 좋아요.
출처: PostgreSQL 문서
본문
CLOSE는 열려 있는 커서에 연결된 리소스를 해제해요. 커서를 닫은 뒤에는 그 커서에 더 이상 어떤 작업도 할 수 없어요. 커서가 더 이상 필요 없어지면 닫아주면 돼요.
Synopsis (개요)
CLOSE { name | ALL }
Description (설명)
CLOSE는 열려 있는 커서와 연결된 리소스를 해제해요. 커서를 닫은 뒤에는 더 이상 그 커서에 어떤 후속 작업도 허용되지 않아요. 커서가 더 이상 필요 없어지면 닫아주는 게 좋아요.
비-holdable(유지 불가) 커서는 트랜잭션이 COMMIT이나 ROLLBACK으로 종료될 때 모두 암시적으로 닫혀요. holdable(유지 가능) 커서는 그 커서를 만든 트랜잭션이 ROLLBACK으로 중단되면 암시적으로 닫혀요. 만든 트랜잭션이 정상적으로 커밋되면, holdable 커서는 명시적인 CLOSE가 실행되거나 클라이언트가 연결을 끊을 때까지 열린 상태로 남아 있어요.
Parameters (파라미터)
name— 닫을 열린 커서의 이름.ALL— 현재 열려 있는 모든 커서를 닫아요.
Notes (주의)
PostgreSQL에는 명시적인 OPEN 커서 문이 없어요. 커서는 선언(declared)되면 열린 것으로 간주돼요. 커서를 선언하려면 DECLARE 문을 사용해요.
현재 열려 있는 모든 커서는 pg_cursors 시스템 뷰를 조회하면 볼 수 있어요.
저장점(savepoint) 이후에 닫은 커서가 나중에 롤백되는 경우, CLOSE는 롤백되지 않아요. 즉, 커서는 닫힌 상태로 남아 있어요.
Examples (예시)
liahona 커서를 닫는 예시예요.
CLOSE liahona;
Compatibility (호환성)
CLOSE는 SQL 표준에 완전히 부합해요. CLOSE ALL은 PostgreSQL 확장이에요.
더 알아보기 (Learn more)
- 커서 선언과 관련된
DECLARE, 커서에서 행을 읽어오는FETCH, 커서 위치를 이동하는MOVE명령과 함께 사용해요.