DBMS_STREAMS_MESSAGING
パッケージは、Oracle Streamsパッケージ・セットの1つであり、ANYDATA
キューにメッセージをエンキューおよびデキューするインタフェースを提供しています。
この章では、次の項目について説明します。
概要
セキュリティ・モデル
この項では、DBMS_CAPTURE_ADM
パッケージの使用に関連する項目について説明します。
このパッケージは、ANYDATA
キューへのメッセージのエンキューおよびデキューを行うインタフェースを提供します。
注意: 現在、メッセージ・クライアントはバッファに入れたメッセージをデキューできません。また、DBMS_STREAMS_MESSAGING パッケージを使用して、バッファに入れられたキューにメッセージをエンキューまたはデキューすることはできません。ただし、DBMS_AQ パッケージを使用して、バッファに入れられたメッセージをエンキューおよびデキューできます。 |
関連項目: キュー、メッセージおよびDBMS_AQパッケージの詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』 を参照してください。 |
このパッケージのセキュリティは、次のいずれかの方法で制御できます。
選択したユーザーまたはロールに、このパッケージのEXECUTE
を付与する方法
選択したユーザーまたはロールに、EXECUTE_CATALOG_ROLE
を付与する方法
パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE
権限を直接付与する必要があります。ロールを通して付与することはできません。
このパッケージ内のサブプログラムを実行するユーザーが必要な権限を所有するには、Oracle Streams管理者を構成し、このパッケージを使用するときにOracle Streams管理者として接続します。
関連項目: Oracle Streams管理者の構成の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。 |
表163-1 DBMS_STREAMS_MESSAGINGパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
指定したOracle Streamsメッセージ・クライアントを使用して、指定したキューからメッセージをデキューします。 |
|
現在のユーザーが指定したキューにメッセージをエンキューします。 |
注意: このパッケージのサブプログラムはコミットしません。 |
このプロシージャは、指定したOracle Streamsメッセージ・クライアントを使用して、指定したキューからメッセージをデキューします。
このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンには、msgid
OUT
パラメータがあり、他方のバージョンにはこのパラメータがありません。
構文
DBMS_STREAMS_MESSAGING.DEQUEUE( queue_name IN VARCHAR2, streams_name IN VARCHAR2, payload OUT ANYDATA, dequeue_mode IN VARCHAR2 DEFAULT 'REMOVE', navigation IN VARCHAR2 DEFAULT 'NEXT MESSAGE', wait IN BINARY_INTEGER DEFAULT FOREVER, msgid OUT RAW); DBMS_STREAMS_MESSAGING.DEQUEUE( queue_name IN VARCHAR2, streams_name IN VARCHAR2, payload OUT ANYDATA, dequeue_mode IN VARCHAR2 DEFAULT 'REMOVE', navigation IN VARCHAR2 DEFAULT 'NEXT MESSAGE', wait IN BINARY_INTEGER DEFAULT FOREVER);
パラメータ
表163-2 DEQUEUEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
メッセージをデキューするローカル・キューの名前で、 たとえば、 |
|
Oracle Streamsメッセージ・クライアントの名前。たとえば、ユーザー このパラメータが |
|
デキューするペイロード。 |
|
次のいずれかの設定を指定します。
|
|
取り出されるメッセージの位置。最初に、位置が判断されます。次に、検索基準が適用されます。最後に、メッセージが取り出されます。 次のいずれかの設定を指定します。
注意: 各メッセージ・グループには、単一のトランザクションのメッセージが含まれます。 関連項目: デキュー・オプションの詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照してください。 |
|
|
|
デキューするメッセージのメッセージID。 |
例外
表163-3 DEQUEUEプロシージャの例外
例外 | 説明 |
---|---|
|
デキューは現在のトランザクションの最後のメッセージに達しました。この例外は次のように指定します。 SYS.DBMS_STREAMS_MESSAGING.ENDOFCURTRANS すべてのデキュー・プロシージャに、この例外を処理する例外ハンドラを含める必要があります。 |
|
キュー内にデキュー操作の対象となるメッセージがありません。この例外は次のように指定します。 SYS.DBMS_STREAMS_MESSAGING.NOMOREMSGS
|
このプロシージャを使用して、現在のユーザーが指定したキューにメッセージをエンキューできます。
このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンには、msgid
OUT
パラメータがあり、他方のバージョンにはこのパラメータがありません。
構文
DBMS_STREAMS_MESSAGING.ENQUEUE( queue_name IN VARCHAR2, payload IN ANYDATA, msgid OUT RAW); DBMS_STREAMS_MESSAGING.ENQUEUE( queue_name IN VARCHAR2, payload IN ANYDATA);
パラメータ
表163-4 ENQUEUEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
メッセージをエンキューするローカル・キューの名前で、 たとえば、 |
|
エンキューするペイロード。 |
|
エンキューするメッセージのメッセージID。 |