Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
47
Добавлен:
08.01.2022
Размер:
1 Mб
Скачать
  1. Pl/sql. Условные операторы if

Условный оператор реализует выполнение определённых команд при условии, что некоторое логическое выражение (условие) принимает значение «истина» true.

IF-THEN – используется тогда, когда нужно выполнять действия, если условие истинно.

IF (УСЛОВИЕ) THEN

END IF;

IF-THEN-ELSE – используется, когда нужно выполнить один набор действий при истинном условии и другой набор при ложном.

IF (УСЛОВИЕ) THEN

ELSE

END IF;

IF-THEN-ELSIF – используется, когда нужно выполнить один набор действий при истинном УСЛОВИИ1; другой набор при истинном УСЛОВИИ2; и третий набор, когда УСЛОВИЕ1 и УСЛОВИЕ2 ложные.

IF (УСЛОВИЕ1) THEN

ELSIF (УСЛОВИЕ2) THEN

ELSE

END IF;

  1. Pl/sql. Циклы

Цикл — конструкция, предназначенная для организации многократного исполнения набора инструкций.

LOOP

Оператор LOOP используется, когда неизвестно, сколько раз нужно выполнить тело цикла.

Синтаксис:

LOOP

/* statements */

END LOOP;

statements – код выполняющийся при каждом прохождении через цикл.

Есть определенные пути выхода из циклов. Их три:

1. EXIT ­ Безусловный выход из цикла. Используется посредством применения оператора IF.

2. EXIT WHEN ­ Выход при выполнении условия.

3. GOTO ­ Выход из цикла во внешний контекст.

Цикл LOOP можно прервать любым оператором EXIT, или когда он сталкивается с EXIT WHEN, который принимает значение TRUE.

Например:

LOOP

A := A + 1;

EXIT WHEN A > 5;

END LOOP;

FOR LOOP

Цикл FOR LOOP позволяет выполнить код повторно в течение фиксированного количества раз.

Синтаксис:

FOR loop_counter IN [REVERSE] lowest_number..highest_number

LOOP

/* statements */

END LOOP;

loop_counter – переменная счетчика цикла.

REVERSE не является обязательным. Если REVERSE указан, то счетчик цикла будет считать в обратном порядке.

lowest_number – начальное значение для loop_counter

highest_number – конечное значение для loop_counter.

statements – код выполняющийся при каждом прохождении через цикл.

CURSOR FOR LOOP

CURSOR FOR LOOP можно использовать тогда, когда нужно выгрузить и обработать каждую запись курсора. Цикл завершится, когда все записи будут извлечены в курсор.

Синтаксис:

FOR record_index in cursor_name

LOOP

/* statements */

END LOOP;

record_index – индекс записи

cursor_name – имя курсора, из которого нужно извлечь записи.

statements – код выполняющийся при каждом прохождении через цикл.

WHILE LOOP

Цикл будет выполняться до тех пор, пока условие истинно.

Синтаксис:

WHILE (condition)

LOOP

/* statements */

END LOOP;

Condition проверяется при каждом прохождении цикла. Если condition принимает значение TRUE, цикла выполняется, иначе прекращается.

statements – код выполняющийся при каждом прохождении через цикл.

  1. Pl/sql. Курсоры. Курсорный цикл for.

Под курсором понимается получаемый при выполнении запроса результирующий набор и связанный с ним указатель текущей записи. В PL/SQL поддерживаются два типа курсоров: явные и неявные. Явный курсор объявляется разработчиком, а неявный курсор не требует объявления.

Курсор может возвращать одну строку, несколько строк или ни одной строки. При работе с курсорами используются операторы: OPEN, FETCH, CLOSE, CURSOR.

Оператор

Смысл

Действие

CURSOR

Выполняет объявление явного курсора

Задает имя и определяет связанный с ним запрос к БД, который соответствует виртуальному набору данных (ВНД)

OPEN

Открывает курсор, создавая новый результирующий набор на базе указанного запроса.

Создает новый результирующий набор на базе указанного запроса

FETCH

Выполняет последовательное извлечение строк из результирующего набора от начала до конца

Считывает очередную строку из результирующего набора

CLOSE

Закрывает курсор и освобождает занимаемые им ресурсы.

Прекращает доступ к ВНД, соответствующему курсору

Синтаксис:

CURSOR имя_курсора

IS

SELECT_statement /* код запроса */;

Цикл FOR

Цикл FOR с курсором выполняет следующие действия:

1. Неявно объявляет переменную цикла как запись %ROWTYPE.

2. Открывает курсор.

3. При каждои ̆итерации извлекает следующую строку из результирующего набора в поля неявно объявленной записи.

4. По достижении конца результирующего набора закрывает курсор.