(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Процедура RAISE_APPLICATION_ERROR

Источник: akarak

Процедура RAISE_APPLICATION_ERROR позволяет посылать собственные пользовательские сообщения об исключениях из хранимых программ. Эта процедура возвращает пользователю информацию об исключении тем же способом, которым пользуется сервер Oraсle для возвращения информации для прочих исключений.

 
declare
 i integer;
begin
 i :=1 /0;
exception
 when others then
    raise_application_error (-20000,'Деление на ноль.');
end;
 
или еще варианты
 
...
exception
...
 when no_data_found then
   raise_application_error (-20000,'ненайденно данных');
 when others then
   raise_application_error (-20200,'другие ошибки');
end;
 
Ниже приведена выдержка из книги "ORACLE PL/SQL для профессионалов"
 
Использование процедуры
RAISE_APPLICATION_ERROR

Вот заголовок процедуры RAISE_APPLICATION_ERROR:
PROCEDURE RAISE_APPLICATION_ERROR (
num binary_integer,
msg varchar2,
keeperrorstack boolean default FALSE):
Здесь num - это номер ошибки из диапазона от -20 999 до -20 000 (вы только подумайте: все остальные отрицательные числа, которые больше -20 000, Oracle использует для собственных исключений!); msg - это сообщение об ошибке, длина которого не должна превышать 2048 символов (символы, выходящие за эту границу, игнорируются); аргумент keeperrorstack указывает, хотите вы добавить ошибку к тем, что уже имеются в стеке (TRUE), или заменить существующую ошибку (значение по умолчанию - FALSE).

ПРИМЕЧАНИЕ
--------------------------------------------------
Предполагается, что Oracle для обозначения пользовательских ошибок выделила диапазон номеров от -20 999 до -20 000, но учтите, что в нескольких встроенных пакетах, в том числе в DBMS_OUTPUT и DBMS_DESCRIBE, номера от-20 005 до -20 000 по-прежнему присваиваются системным ошибкам. Не очень удобно, конечно, но дело обстоит именно так. Более подробно об их использовании вы узнаете из документации пакетов.
--------------------------------------------------

При использовании процедуры RAISE_APPLICATI0N_ERR0R вы сами определяете и номер ошибки, и поясняющее ее сообщение. Правда, это может вызвать у вас некоторую растерянность, и вы наверняка будете действовать по принципу: "Сомневаюсь, что кто-нибудь уже задал номер -20 774, воспользуюсь им!" Для того чтобы облегчить себе управление кодами ошибок и обеспечить своих коллег согласованным интерфейсом для обработки серверных ошибок, имеет смысл создать таблицу для хранения всех выделенных для нужд разработчиков номеров ошибок (-20 NNN) и связанных с ними имен исключений и сообщений об ошибках. Тогда любой программист сможет просмотреть уже определенные вами или членами вашей команды ошибки и найти те из них, которые подходят для текущей ситуации. Пример такой таблицы вы найдете в файле msginfo.prg на узле O'Reilly. Там же имеется код, генерирующий пакет с объявлениями всех "зарегистрированных" исключений.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 26.01.2010 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Oracle Database Standard Edition 2 Named User Plus License
Oracle Database Personal Edition Named User Plus Software Update License & Support
Oracle Database Standard Edition 2 Processor License
Oracle Database Personal Edition Named User Plus License
go1984 pro
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Программирование в AutoCAD
СУБД Oracle "с нуля"
Программирование на Visual Basic/Visual Studio и ASP/ASP.NET
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100