Мы уже довольно подробно обсудили некоторые механизмы ввода/вывода в PL/SQL (см. ссылки по теме в конце статьи), особенно часто встречающиеся в реальных приложениях, однако существуют и другие:
- Каналы (pipes) баз данных, очереди и оповещения.
- Сокеты
TCP
. - Встроенный веб-сервер
Oracle
.
Каналы, очереди и оповещения в PL/SQL
Встроенный пакет DBMS_PIPE
изначально проектировался как эффективный механизм передачи небольших блоков данных между сеансами Oracle
. С появлением автономных транзакций потребность в каналах как механизме простой изоляции транзакций друг от друга отпала. Кроме того, каналы могут использоваться для самостоятельной организации параллельных операций.
Очереди — другой механизм асинхронной передачи сообщений между сеансами Oracle
. Они существуют в нескольких разновидностях: с одним и несколькими производителями данных (producers), с одним и несколькими потребителями данных (consumers
), с ограничением срока жизни сообщений, с приоритетами и т. д. Новейшая функциональность очередей в Oracle описана в документации Oracle Streams Advanced Queuing User’s Guide
.
Пакет DBMS_ALERT
обеспечивает синхронное оповещение нескольких сеансов о наступлении различных событий базы данных. В наши дни эта возможность используется относительно редко; Oracle
предоставляет другие средства, которые решают те же задачи, но с более мощной функциональностью.
Сокеты TCP
Какой бы интересной ни считалась тема низкоуровневого сетевого программирования среди специалистов, она просто не относится к числу часто используемых возможностей. В дополнение к встроенному пакету UTL_TCP Oracle
также поддерживает вызов сетевых функций из хранимых процедур Java, которые могут активизироваться из кода PL/SQL
.
Встроенный веб-сервер Oracle
Даже если вы не приобрели лицензию на продукт Oracle Application Server
, это не мешает вам использовать сервер HTTP
, встроенный в Oracle
. Конфигурация встроенного сервера изменяется в зависимости от версии Oracle, но программирование на PL/SQL
для него (включая пакеты OWA_UTIL
, HTP
и HTF
) остается относительно неизменным. Эти пакеты позволяют генерировать веб-страницы на основании данных из базы непосредственно в коде PL/SQL. Данная тема весьма обширна, особенно если вы собираетесь генерировать и обрабатывать формы HTML на своей странице. В книге Learning Oracle PL/SQL (издательство O’Reilly) представлено введение в PL/SQL с интенсивным использованием встроенного веб-сервера и многочисленными примерами. Приемы программирования PL/SQL также применимы при использовании автономного полноценного сервера приложений Oracle; за дополнительной информацией об этом продукте обращайтесь к книге Oracle Application Server 10g Essentials (авторы — Рик Гринуолд (Rick Greenwald), Роберт Стаковяк (Robert Stackowiak) и Дональд Бейлз (Donald Bales)).
Хотя Oracle Application Express (или Oracle APEX) формально не является механизмом ввода/вывода, о нем также стоит упомянуть. Эта бесплатная надстройка для
Oracle позволяет строить полнофункциональные веб-приложения, подключающиеся к базе данных Oracle. Программисты PL/SQL могут писать собственные хранимые программы, которые интегрируются с графической инфраструктурой Oracle APEX, предоставляющей много удобных средств для обмена данными через наглядный пользовательский интерфейс.
Ссылки по теме
Работа с данными интернета в PL/SQL через Oracle UTL_HTTP
Приемы для отправки почты через PL/SQL на примере
Запись, чтение в файл, каталог буфер в PL/SQL