Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Топ:
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Интересное:
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Дисциплины:
2020-06-02 | 120 |
5.00
из
|
Заказать работу |
|
|
Обработчик состояния можно поместить в составную команду. При создании обработчика вначале следует объявить состояние, которое обработчик должен обрабатывать. Объявленное состояние может быть исключением или же некоторым другим состоянием. В табл. 19.2 представлены возможные состояния, а также кратко описаны причины возникновения состояния каждого вида.
Таблица 19.2. Состояния, которые можно определить в обработчике.
Состояние | Описание |
SQLSTATE VALUE ' xxyyy ' | Соответствующее значение sqlstate |
SQLEXCEPTION | Класс sqlstate, отличный от '00', ' 01' или '02' |
SQLWARNING | Класс ' 01' |
NOT FOUND | Класс ' 02' |
Ниже приведен пример объявления состояния.
BEGINDECLARE constraint_violation CONDITIONFOR SQLSTATE VALUE '23 000';END;Приведенный пример не является взятым из жизни, поскольку внутри структуры BEGIN…END должны располагаться и команда SQL, ответственная за возникновение особого состояния, и его обработчик.
Действие и эффект обработчика
Как только возникает состояние, вызывающее соответствующий обработчик, выполняется действие, определенное этим обработчиком. Такое действие может быть простой или составной командой SQL. После успешного выполнения обработчика выполняется некоторое последействие, называемое эффектом. Ниже представлен список трех возможных эффектов обработчика.
· CONTINUE. Выполнение команды, следующей после команды, инициировавшей действие обработчика.
· EXIT. Выход из составной команды, содержащей обработчик, и выполнение следующей команды.
· UNDO. Отмена всех предыдущих команд составной и выполнение следующей команды.
Эффект CONTINUE лучше всего применять в том случае, если обработчик способен устранить любую проблему, вызвавшую его. Эффект EXIT применяется, если обработчику не под силу исправить проблему, но нет необходимости отменять изменения, сделанные составной командой. Эффект UNDO позволяет вернуться в состояние до выполнения составной команды. Рассмотрим следующий пример:
|
Если выполнение какой-либо из двух команд INSERT вызывает нарушение некоторого ограничения, например, в результате добавления записи с первичным ключом, уже присутствующим в таблице, в параметр SQLSTATE помещается значение 23000 и возникает состояние constraint_violation. Обработчик такого события отменяет изменения, внесенные в таблицы командами INSERT. Команда RESIGNAL возвращает управление процедуре, вызвавшей процедуру обработчика.
После успешного выполнения обеих команд INSERT следующей выполняется команда за ключевым словом END.
Помни:
Ключевое слово ATOMIC является обязательным в случае эффекта UNDO. Это не распространяется на обработчики с эффектами CONTINUE или EXIT.
Необрабатываемые состояния
Предположим, в предыдущем примере возникнет состояние, при котором значение SQLSTATE будет отличным от '23000'. Ваш обработчик не может обработать подобное состояние. Так как в текущей процедуре такое состояние не предусмотрено, выполняется команда RESIGNAL. После этого состояние может быть обработано на более высоком уровне. Если же и на этом уровне состояние нельзя обработать, она передается на еще более высокий уровень и т.д., пока состояние не будет обработано или пока не будет сгенерирована ошибка в основном приложении. Основная идея вышесказанного заключается в следующем: если во время выполнения команды SQL возможно появление исключений, необходимо написать обработчики всех возможных исключений. Это позволит намного упростить отладку.
Присваивание
С появлением SQL/PSM SQL наконец-то получил возможность, которую всегда имели даже самые примитивные процедурные языки, – возможность присваивания значения переменной. Присваивание выглядит так:
SET переменная = значение;Где переменная – имя переменной, а значение – выражение. Ниже приведено несколько примеров присваивания.
SET vfname = 'Brandon';SET varea = 3.1416 *:radius *:radius;SET vhiggsmass = NULL;
|
|
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!