DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

DBMS_PIPE

DBMSPIPE позволяет посылать сообщения между сеансами, подключен­ными к одной базе данных. Сеансы могут быть различными клиентскими программами, либо они могут выполняться на различных машинах. Если они способны посылать команды PL/SQL на сервер, то они могут обща­ться. Например, можно использовать 1)JBMS_PIPE для коммуникации между хранимой процедурой и программой Рто*С. Этим обеспечивается функциональность, аналогичная внешней процедуре.
Каналы (pipe) являются асинхронными — они действуют независимо от транзакций. Не существует способа отменить сообщение, посланное в ка­нал, даже если сеанс, который его послал, выполнил ROLLBACK. Следо­вательно, каналы могут использоваться для выполнения автономных
транзакций.
Сообщения посылаются в канал отправителем, который сначала упако­вывает их в буфер, а затем посылает буфер. Приемник получает буфер и распаковывает сообщение. Предположим, что в сеансе SQL*Plus выполня­ется следующий блок:
Этот код посылает сообщение, содержащее дату, число и строку, в ка­нал MyPipe. Можно получить это сообщение в другом (или в том же самом) сеансе SQL*Plus, соединенном с той же базой данных, с помощью следую­щего кода:
DBMS_PIPE может применяться для отправки сообщений, содержащих данные VARCHAR2, NUMBER, DATE, RAW или ROWID. Определенные пользователем объектные типы и сборные конструкции не поддерживают­ся DBMS_PIPE. Для отправки сообщений с данными этих типов можно использовать Oracle Advanced Queuing.
 









jAntivirus