Введение в СУБД "Oracle". Космачев В.М - 61 стр.

UptoLike

ГУАП МЦИТ
Введение в «ORACLE»
Под ред. проф. В.М.Космачёва
61
PROGRAM_ERROR
Внутренняя ошибка PL/SQL
CURSOR_ALREADY_OPEN
Попытка открыть курсор, который уже открыт
Рассмотрим пример программы с обработкой исключительных ситуаций. В тексте программы пропущен оператор
открытия курсора, поэтому при обращении к методу %FOUND неоткрытого курсора возникнет исключительная
ситуация INVALID_CURSOR
Пример 2.3.22
SQL>DECLARE
Argl LECTURE.LECTURE_ID%TYPE;
Arg2 LECTURE.SURNAME%TYPE;
АгдЗ LECTURE.NAME%TYPE;
Arg4 LECTURE.FAC_ID%TYPE;
Cursor Curl IS SELECT * FROM LECTURE;
BEGIN
FETCH Curl INTO Argl,Arg2,АгдЗ,Arg4;
WHILE Curl%FOUND LOOP
FETCH Curl INTO Argl,Arg2,АгдЗ,Arg4;
END LOOP;
EXCEPTION
WHEN INVALID_CURSOR THEN
DBMS_OUTPUT.PUT_LINE(‘Ошибка приложения.He открыт курсор’);
END;
/
Для обработки исключительных ситуаций, не входящих в перечень стандартных, можно использовать специальный
обработчик PL/SQL OTHERS или описать пользовательскую исключительную ситуацию и запрограммировать ее
обработку. Ключевое слово OTHERS блока EXCEPTION определяет механизм универсальной обработки
исключительных ситуаций, не вошедших в список ситуаций, обрабатываемых явно в блоке EXCEPTION. Введем в
текст программы запрещенную операцию деления на ноль и обработаем данную исключительную ситуацию в списке
OTHERS. (На самом деле в ORACLE предопределена исключительная ситуация ZERO_DIVIDE, но в данном примере
это не важно, а важно то, что ее нет в списке блока EXCEPTION.)
Пример 2.3.23
SQL> DECLARE
Argl LECTURE.LECTURE_ID%TYPE;
Arg2 LECTURE SURNAME%TYPE;
Arg3 LECTURE.NAME%TYPE;
Arg4 LECTURE.FAC_ID%TYPE;
Cursor Curl IS SELECT * FROM LECTURE;
Arg5 NUMBER:=1;
BEGIN
Arg5:=Arg5/0.0;
WHILE Curl%FOUND LOOP
FETCH Curl INTO Argl,Arg2,Arg3,Arg4,Arg5;
END LOOP;
EXCEPTION