`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 명령과 함께 사용해요.