...
END LOOP;
Ссылка на неоткрытый курсор или курсорную переменную с помощью %NOTFOUND вызывает исключение INVALID_CURSOR.
%ROWCOUNT
Когда курсор или курсорная переменная открывается %ROWCOUNT обнуляется. До первой выборки %ROWCOUNT производит 0. Потом он содержит количество выбранных строк. Число увеличивается, если последняя выборка возвратила строку. В следующем примере %ROWCOUNT используется для выполнения действия если более десяти строк было выбрано:
LOOP
FETCH c1 INTO my_ename, my_deptno;
IF c1%ROWCOUNT > 10 THEN
...
END IF;
...
END LOOP;
Если курсор или курсорная переменная не открыта, ссылаясь на % ROWCOUNT происходит исключение INVALID_CURSOR.
Примеры.
Предположим, что имеется таблица data_table которая содержит данные, собранные из экспериментов лаборатории, и нужно анализировать данные эксперимента 1. В следующем примере, вычисляются результаты и сохраняются в таблице базы данных, именованной temp:
-- доступный интерактивно в файле EXAMP5
DECLARE
Num1 data_table. n1 ТИП %; - Объявим переменные
Num2 data_table. n2 ТИП %; - имеющий те же самые типы как
Num3 data_table. n3 ТИП %; - столбцы базы данных
result temp.col1%TYPE;
CURSOR c1 IS
SELECT n1, n2, n3 FROM data_table WHERE exper_num = 1;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO num1, num2, num3;
EXIT WHEN c1%NOTFOUND;
- C1 % NOTFOUND условие производит TRUE
- когда FETCH не находит больше строки
result := num2/(num1 + num3);
INSERT INTO temp VALUES (result, NULL, NULL);
END LOOP;
CLOSE c1;
COMMIT;
END;
Атрибуты неявного курсора
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.