Поделиться через


Инструкция OPEN

Область применения:check помечена да 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 ] } [, ...] ]

Параметры

Примечания.

Поведение привязки параметров соответствует 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