русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Обработка исключительных ситуаций


Дата добавления: 2013-12-24; просмотров: 1170; Нарушение авторских прав


РАБОТА С КУРСОРНЫМИ ПЕРЕМЕННЫМИ

Похожа – с рядом отличий – на работу с курсорами:

• Для курсорной переменной нельзя использовать курсорный цикл FOR.

• Курсор открывается в программе при помощи оператора OPEN FOR. При использовании строгого курсорного типа форма запроса, в котором определяется курсор, должна соответствовать форме курсорного типа.

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

 

declare

type cursor_type is ref cursor;

customers_cursor cursor_type;

begin

open customers_cursor for

select id, last_name, first_name, phone from sales.customers;

while customers_cursor %found

loop

if ...then

... другие операторы ...

end if;

... другие операторы ...

end loop;

close customers_cursor;

Программу нельзя считать завершенной, если она не содержит подпрограмм, предназначенных для обработки ошибок, происходящих во время выполнения обычных операций по обработке данных. В программах PL/SQL подпрограммы обработки ошибок в тело программы не встроены. Они представляют собой так называемые обработчики исключительных ситуаций. Распознав ошибку, программа PL/SQL устанавливает (raises) исключительную ситуацию (exception) и передает управление соответствующей подпрограмме – обработчику исключительных ситуаций, которая не является частью тела программы.

Исключительная ситуация представляет собой поименованное условие возникновения ошибки. В PL/SQL имеется множество заранее определенных исключительных ситуаций, соответствующих чаще всего встречающимся в ORACLE ошибкам. Например:

• Программа распознает исключительную ситуацию NO_DATA_FOUND (данные не обнаружены) в случае, если в результирующем множестве оператора SELECT INTO нет строк, и исключительную ситуацию TOO_MANY_ROWS (слишком много строк), когда в результирующем множестве оператора SELECT INTO более одной строки.



• Программа распознает исключительную ситуацию DUP_VAL_ON_INDEX (повторяющееся значение в индексе) в случае, если оператор INSERT или UPDATE дублирует ключевое значение, уже находящееся в таблице.

• Программа распознает исключительную ситуацию ZERO_DIVIDE (деление на нуль) в случае, если оператор пытается поделить число на нуль.

В PL/SQL включено почти 20 заранее определенных исключительных ситуаций. Когда в программе встречается заранее определенная исключительная ситуация, то управление программой автоматически передается соответствующему обработчику исключительных ситуаций, если таковой имеется.

Исключительные ситуации, определяемые пользователями, можно объявлять в разделе объявлений программы. Однако чтобы затем установить такую исключительную ситуацию, необходимо выполнить ее явную проверку. При желании можно назначить индивидуальный номер ошибки ORACLE исключительной ситуации, определяемой пользователем. При вызове программой указанной ошибки ORACLE автоматически устанавливается исключительная ситуация, определяемая пользователем.

Обработчик исключительной ситуации – это подпрограмма, которой передается управление в случае установления ею соответствующей исключительной ситуации. В примере, приведенном ниже, демонстрируется использование заранее определенных и определяемых пользователями исключительных ситуаций, а также соответствующих обработчиков.

 

declare

invalid_part exception;

insufficient_privileges exception;

err_num integer;

err_msg varchar2(2000);

part_num integer;

begin

selectintofrom…;

update parts

set unit_price=20.00

where id=6;

if SQL %NOTFOUND then

raise invalid_part;

end if;

exception

when no_data_found then

raise_application_error (-20001, ‘No rows found’);

when too_many_rows then

raise_application_error (-20002, ‘Too many rows found’);

when invalid_part then

raise_application_error (-20003, ’Invalid part ID’);

when insufficient_privileges then

raise_application_error(-20004,’Insufficient privileges to update table’);

when others then

err_num:=SQLCODE;

err_msg:=SUBSTR(SQLERRM, 1, 100);

raise_application_error(-20000, err_num || ‘ ‘||err_msg);

 

В данном примере:

- Для возвращения в вызывающую среду номера и сообщения об ошибке, определяемой пользователем, применяется процедура raise_application_error (установить ошибку приложения). Номера сообщений об ошибках, определяемых пользователем должны лежать в диапазоне от -20000 до -20999.

- Для создания общего обработчика всех исключительных ситуаций, для которых не определены собственные обработчики, применяется синтаксис when others.

- Для возвращение номера и сообщения о самой последней ошибке ORACLE применяются специальные функции SQLCODE и SQLERRM.

24.5. Типы программ PL/SQL

Существует три типа программ PL/SQL: анонимные блоки (anonymous blocks), хранимые процедуры (stored procedure), хранимые функции (stored function).



<== предыдущая лекция | следующая лекция ==>
РАБОТА С КУРСОРАМИ | СОЗДАНИЕ ПРОЦЕДУР


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.23 сек.