русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ПОЛУЧЕНИЕ СООБЩЕНИЙ


Дата добавления: 2013-12-24; просмотров: 928; Нарушение авторских прав


Функции RECEIVE_MESSAGE и NEXT_ITEM_ТУРЕ и процедура UNPACK_MESSAGE модуля DBMS_PIPE используются для приема сообщений, посланных по каналу, а также для распаковки сообщений и превращения их в исходные элементы данных.

Функция RECEIVE_MESSAGE является обратной по отношению к функции SEND_MESSAGE. Она считывает сообщение из канала и помещает его в локальный буфер сообщений. После этого вызывается процедура UNPACK_MESSAGE, которая считывает данные уже из буфера. Описание функции RECEIVE_MESSAGE выглядит следующим образом:

 

function RECEIVE_MESSAGE (pipename in varchar2,

timeout in integer

default MAXWAIT)

return integer;

 

Обычно RECEIVE_MESSAGE вызывается из принимающей программы. Если сообщения не ожидаются, то RECEIVE MESSAGE блокируется до тех пор, пока не считает сообщение. Таким образом, сеанс-получатель будет находиться в режиме ожидания до посылки сообщения по каналу. Принимающие программы похожи на процессы-демоны операционной системы. Демон также “засыпает” и “просыпается” только тогда, когда будет получено сообщение по программному каналу. Параметры функции RECEIVE_MESSAGE описаны в следующей таблице:

 

Таблица 14 Параметры функции RECEIVE_MESSAGE

Параметр Тип Описание
pipename varchar2 Имя канала. Оно должно быть таким же, как и указанное в SEND_MESSAGE. На имя канала налагаются те же ограничения (длина менее 30 символов, нечувствительность к регистру символов).
timeout integer Максимальное время ожидания сообщения в секундах. Как и в SEND_MESSAGE, значение по умолчанию – MAXWAIT (1000 дней). Если параметр TIMEOUT равен 0, то значение RECEIVE_MESSAGE возвращается немедленно с состоянием 0 (сообщение считано) или 1 (задержка).

 

Коды, возвращаемые функцией RECEIVE_MESSAGE, описаны в таблице 15.



 

Таблица 15 Значения, возвращаемые функцией RECEIVE_MESSAGE

Возвращаемое значение Описание
Сообщение успешно получено. Оно было считано в локальный буфер и может быть распаковано с помощью UNPACK_MESSAGE.
Задержка. За время ожидания RECEIVE_MESSAGE по каналу не было передано ни одного сообщения.
Сообщение в канале слишком велико для буфера. Это внутренняя ошибка, которая не происходит в обычных условиях.
Вызов прерван из-за внутренней ошибки.

 

Функция NEXT_ITEM_TYPE возвращает тип данных следующего элемента в буфере. На основании этого значения можно решить, в какую переменную написать данные. Если тип известен заранее, то вызывать ее необязательно. Функция NEXT_IТЕМ_ТУРЕ описывается следующим образом:

 

function NEXT_ITEM_TYPE return integer;

 

Возвращаемые коды описаны в следующей таблице:

 

Таблица 16 Возвращаемые коды функции NEXT_ITEM_TYPE

Возвращаемое значение Описание
Элементов в буфере больше нет
Следующий элемент в буфере типа number
Следующий элемент в буфере типа varchar2
Следующий элемент в буфере типа date

 

Для распаковки принятых сообщений в модуле DBMS_PIPE предназначена процедура UNPACK_MESSAGE. Данная процедура является обратной по отношению к процедуре РАСК_MESSAGE. Подобно РАСК_MESSAGE, она переопределяется типами считываемых элементов. Описание процедуры UNPACK_MESSAGE выглядит следующим образом:

 

procedure UNPACK_MESSAGE (item out varchar2);

procedure UNPACK_MESSAGE (item out number);

procedure UNPACK_MESSAGE (item out date);

 

В ITEM записывается элемент данных из буфера. Если в буфере больше нет данных или если следующий элемент в буфере имеет не тот тип, который был запрошен, генерируется ошибка ORACLE ORA-6556 или ORA-6559. Перед установлением ошибки PL/SQL пытается преобразовать тип следующего элемента в нужный тип, используя формат преобразования, заданный по умолчанию.

 



<== предыдущая лекция | следующая лекция ==>
ПОСЫЛКА СООБЩЕНИЙ | ОБЩИЕ И ЧАСТНЫЕ КАНАЛЫ


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.14 сек.