- •Язык pl/sql
- •Блоки программы pl/sql
- •Основы программирования на языке pl/sql
- •Переменные программы
- •Управление ходом выполнения программы
- •Взаимодействие с базами данных
- •Объявление и использование подпрограмм: процедуры и функции
- •Работа с переменными типа запись
- •Атрибуты %type и %rowtype
- •Работа с курсорами
- •Встроенные пакеты утилит
- •Триггеры баз данных
- •Упражнение 4.21. Создание и использование триггеров базы данных
Встроенные пакеты утилит
Oracle включает несколько встроенных пакетов утилит, которые предоставляют полезные средства разработки приложений. В таблице описаны некоторые встроенные пакеты, доступные в базах данных Oracle.
Имя пакета |
Описание |
DBMS_ALERT
DBMS_AQ DBMS_AQADM DBMS_CRYPTO
DBMS_DESCRIBE
DBMS_LOB
DBMS_LOCK
DBMS_METADATA
DBMS_OUTPUT
DBMS_PIPE
DBMS_RANDOM
DBMS_ROWID
DBMS_SCHEDULER DBMS_SESSION
DBMS_SPACE
DBMS_STATS
DBMS_TRANSACTION UTL_FILE
UTL_HTTP
UTL_SMTP |
Процедуры и функции, позволяющие приложениям сообщать об аварийных ситуациях с указанием их типа без опроса Процедуры и функции для установки очередности выполнения транзакций и администрирования механизмов установки очередности Процедуры и функции для шифрования и расшифровки данных на диске в условиях, когда необходимо обеспечить защиту данных Процедуры и функции для описания API для хранимых процедур ифункций Процедуры и функции для операций с данными типов BLOB,CLOB, NCLOBи BFILE Процедуры и функции, позволяющие приложениям координировать доступ к совместно используемым ресурсам Процедуры и функции для извлечения метаданных об объектах схемы из словаря базы данных, такого как XML или SQLDDL Процедуры и функции, позволяющие программе PL/SQL генерировать вывод на терминал Процедуры и функции, позволяющие сеансам баз данных осуществлять связь между собой через коммуникационные каналы (pipes) Процедуры и функции для генерирования случайных чисел и строк для приложений Процедуры и функции, позволяющие приложениям легко интерпретировать базовый 64-символьный тип ROWID Процедуры и функции для создания расписания выполнения работ Процедуры и функции для управления сеансом пользователя приложения Процедуры и функции для анализа использования пространствадля хранения и оценки требований к нему Процедуры и функции для поддержки статистики, помогающей оптимизировать выполнение команд SQL Процедуры для ограниченного контроля транзакций Процедуры и функции для чтения и записи текстовых файлов в файловую систему сервера Процедуры и функции для получения доступа к данным по протоколу передачи гипертекста (HypertextTransferProtocol–HTTP) Процедуры и функции для отправки электронной почты по простому протоколу передачи почты (SimpleMailTransferProtocol– SMTP) |
Триггеры баз данных
Триггером базы данных называется хранимая процедура, которая выполняется, когда происходит некоторое событие. Самым распространенным типом триггера, который вы можете использовать, является триггер DML, который связан с конкретной таблицей; когда приложение обращается к таблице с помощью команды SQLDML, удовлетворяющей условиям срабатывания триггера, Oracle автоматически запускает триггер для выполнения этой операции. Триггеры используются для настройки реакции Oracle на события приложения.
Примечание Oracle также поддерживает триггеры, которые срабатывают в ответ на события на уровне базы данных и на уровне схемы. Более подробная информация об этих типах триггеров приведена в Справочнике по командам SQLдля баз данных Oracle.
Для создания триггера DML используется SQL-команда CREATETRIGGER. Упрощенный (неполный) синтаксискоманды CREATE TRIGGER имеетвид:
О CREATE [OR REPLACE] TRIGGER trigger{BEFORE|AFTER} {DELETEfINSERT|UPDATE [OF column [.column] ... ]}
[OR {DELETE|INSERT|UPDATE [OF column [.column] ... J} ] ... ON table
FOR EACH ROW [WHEN condition] ] ... PL/SGL block . . . END [trigger]
Определение триггера DML-включает в себя следующие уникальные части:
Определение триггера включает в себя список директив триггера, включая команды INSERT, LTPDATE и/или DELETE, вызывающие срабатывание триггера. Триггер связан с одной и только одной таблицей. ,
Срабатывание триггера может происходить до его директивы или после, в зависимости от логики приложения.
Б определении триггера указывается, является ли он триггером директивы или триггером строки. Триггер директивы срабатывает только один раз, независимо оттого, на сколько строк распространяется его действие.