다음을 통해 공유


OPEN 문

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

커서를 열고 쿼리를 실행하여 첫 번째 행 앞에 배치합니다.

이 문은 OPEN 선언에 정의된 쿼리를 DECLARE CURSOR 실행하여 지정된 경우 매개 변수 마커를 바인딩합니다. 일단 열리면 커서를 사용하여 FETCH 행을 검색할 수 있습니다.

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

비고

커서를 열면 TABLE_OR_VIEW_NOT_FOUND 또는 COLUMN_NOT_FOUND_IN_TABLE 같은 의미 체계 오류가 발생합니다(있는 경우). 커서를 열면 쿼리 실행도 시작되며 쿼리 실행 양에 따라 DIVIDE_BY_ZERO 같은 런타임 오류가 발생할 수 있습니다.

문법

OPEN cursor_name [ USING { constant_expr [ AS param_name ] } [, ...] ]

매개 변수

  • cursor_name

    선언된 커서의 이름입니다. 커서는 필요에 따라 복합 문 레이블로 정규화하여 외부 범위(예: outer_label.my_cursor)에서 커서를 참조할 수 있습니다.

  • USING { constant_expr [ AS param_name ] } [, ...]

    커서 쿼리의 매개 변수 표식 에 값을 바인딩하는 선택적 절입니다.

    • constant_expr: 매개 변수 표식에 바인딩할 상수 식 (리터럴 또는 변수)입니다. 식은 쿼리에서 예상하는 형식으로 캐스팅할 수 있어야 합니다.
    • AS param_name: 선택 사항입니다. 명명된 매개 변수 표식(:param_name)의 경우 바인딩할 매개 변수를 지정합니다. 명명되지 않은 매개 변수 표식 ()?에 대해 지정하지 않으면 매개 변수는 위치에 의해 바인딩됩니다.

비고

매개 변수 바인딩 동작 일치 EXECUTE IMMEDIATE:

실행 중에 커서의 쿼리에서 오류가 발생하는 경우( 오류 조건 참조) 커서는 닫힌 상태로 유지됩니다. 범위에 없는 커서를 열면 CURSOR_NOT_FOUND 발생합니다. 이미 열려 있는 커서를 열면 CURSOR_ALREADY_OPEN 발생합니다.

예시

-- Open a simple cursor without parameters
> BEGIN
    DECLARE total INT;
    DECLARE my_cursor CURSOR FOR SELECT sum(id) FROM range(10);

    OPEN my_cursor;
    FETCH my_cursor INTO total;
    VALUES (total);
    CLOSE my_cursor;
  END;
45

-- Open cursor with positional parameters
> BEGIN
    DECLARE total INT;
    DECLARE param_cursor CURSOR FOR
      SELECT sum(id) FROM range(100) WHERE id BETWEEN ? AND ?;

    OPEN param_cursor USING 10, 20;
    FETCH param_cursor INTO total;
    VALUES (total);
    CLOSE param_cursor;
  END;
165

-- Open cursor with named parameters
> BEGIN
    DECLARE min_val INT;
    DECLARE named_cursor CURSOR FOR
      SELECT min(id) FROM range(100) WHERE id >= :threshold;

    OPEN named_cursor USING 25 AS threshold;
    FETCH named_cursor INTO min_val;
    VALUES (min_val);
    CLOSE named_cursor;
  END;
25