Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ ORACLE SQL \ JAVA ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

FreeBSD and Nix

Общая

WEB Разработка

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Исключения (ошибки) в Oracle


Рассмотрим конструкцию по отлову исключений(ошибок) в Oracle

when others then - отлавливает все ошибки, которые могут возникнуть, если до нее не отловили ранее

set serveroutput on;

declare
  a INTEGER := 1;
  b INTEGER := 0;
  c CHAR(1) := 'c';
begin
  --Не вызовет ошибки
  DBMS_OUTPUT.PUT_LINE(a / a);
  --Вызовет деление на 0
  --DBMS_OUTPUT.PUT_LINE(a / b);
  --Вызовет все остальные ошибки
  --DBMS_OUTPUT.PUT_LINE(a / c);
  exception
    when zero_divide then
      DBMS_OUTPUT.PUT_LINE('zero_divide!');
    when others then
      DBMS_OUTPUT.PUT_LINE('when others then!');
end;

 

Перевели табличку с описанием ошибок: http://oracleplsql.ru/named-system-exceptions.html

/*
DUP_VAL_ON_INDEX             Вы пытались выполнить операторы insert или update поля, изменение значения которого нарушит ограничение уникальности поля.
TIMEOUT_ON_RESOURCE           Возбуждается при возникновении таймаута, когда ORACLE ожидает ресурса.
TRANSACTION_BACKED_OUT     Откат удаленной части транзакции.
INVALID_CURSOR               Вы пытаетесь сослаться на курсор, который еще не существует. Это могло произойти потому, что вы выполняете выборку (fetch) курсора, который был закрыт (close) или не был открыт (open).
NOT_LOGGED_ON                 Вы пытаетесь выполнить вызов в Oracle, не подключившись к Oracle.
LOGIN_DENIED                 Вы пытаетесь войти в Oracle с неверными имя пользователя / пароль.
NO_DATA_FOUND                 Вы пробовали один из следующих вариантов:
1. Вы выполнили SELECT INTO и запрос не вернул ни одной строки.
2. Вы ссылаетесь на неинициализированную строку в таблице.
3. Вы читаете после конца файла пакета UTL_FILE.
TOO_MANY_ROWS                 Вы пытались выполнить SELECT INTO и запрос вернул более одной строки.
ZERO_DIVIDE                   Вы пытались поделить число на ноль.
INVALID_NUMBER               Вы пытаетесь выполнить оператор SQL который пытается преобразовать строку в число.
STORAGE_ERROR               Вы исчерпали доступную память или память повреждена.
PROGRAM_ERROR                 Это общее сообщение Обратитесь в службу поддержки Oracle, возбуждается по причине обнаружения внутренней ошибки.
VALUE_ERROR                   Вы пытались выполнить операцию и была ошибка преобразования, усечения, или ограничения числовых или символьных данных.
CURSOR_ALREADY_OPEN           Вы попытались открыть курсор, который уже открыт.
*/

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект