다음을 통해 공유


CLOSE 문

적용 대상:yes Databricks Runtime 18.1 이상으로 표시된 확인

열려 있는 커서를 닫고 해당 리소스를 해제합니다.

문은 CLOSE 이전에 연 OPEN커서를 닫고 결과 집합과 연결된 메모리 및 리소스를 해제합니다. 닫은 후 커서를 다시 열어 OPEN 새 매개 변수 바인딩을 사용하여 쿼리를 다시 실행할 수 있습니다.

이 문장은 복합 문장안에서만 사용할 수 있습니다.

문법

CLOSE cursor_name

매개 변수

  • cursor_name

    열려 있는 커서의 이름입니다. 커서는 복합 문 레이블(예 outer_label.my_cursor: )을 사용하여 선택적으로 정규화할 수 있습니다.

비고

열려 있지 않은 커서를 닫으면 CURSOR_NOT_OPEN 발생합니다.

커서는 다음 시나리오에서 자동으로 닫힙니다.

  • 처리되지 않은 예외로 인해 복합 문이 종료되는 경우( 오류 조건 참조)
  • EXIT 처리기가 트리거되면(복합 문 및 중첩된 화합물의 모든 커서가 닫힙니다).
  • 선언하는 복합 문이 정상적으로 종료되는 경우

커서를 닫으면 커서 선언에 영향을 주지 않습니다. 커서 이름은 범위에 남아 있으며 다시 열 수 있습니다.

예시

-- Basic cursor lifecycle
> BEGIN
    DECLARE x INT;
    DECLARE my_cursor CURSOR FOR SELECT id FROM range(3);

    OPEN my_cursor;
    FETCH my_cursor INTO x;
    VALUES (x);
    CLOSE my_cursor;
  END;
0

-- Close cursor in handler
> BEGIN
    DECLARE x INT;
    DECLARE my_cursor CURSOR FOR SELECT id FROM range(2);

    DECLARE EXIT HANDLER FOR NOT FOUND
      BEGIN
        CLOSE my_cursor;
        VALUES ('Cursor closed on completion');
      END;

    OPEN my_cursor;
    REPEAT
      FETCH my_cursor INTO x;
    UNTIL false END REPEAT;
  END;
Cursor closed on completion

-- Reopen cursor with different parameters
> BEGIN
    DECLARE result STRING DEFAULT '';
    DECLARE x INT;
    DECLARE param_cursor CURSOR FOR SELECT id FROM range(10) WHERE id = ?;

    OPEN param_cursor USING 3;
    FETCH param_cursor INTO x;
    SET result = 'First open: ' || CAST(x AS STRING);
    CLOSE param_cursor;

    OPEN param_cursor USING 7;
    FETCH param_cursor INTO x;
    SET result = result || '; Second open: ' || CAST(x AS STRING);
    CLOSE param_cursor;

    VALUES (result);
  END;
First open: 3; Second open: 7