Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » QAnywhere » QAnywhere リファレンス » QAnywhere SQL API リファレンス » メッセージの管理

 

ml_qa_listener_queue

メッセージを非同期的に受信するために、ml_qa_listener_queue というストアド・プロシージャ (queue はメッセージ・キューの名前) を作成します。

パラメータ
項目 説明 備考
1 メッセージ ID VARCHAR(128)。メッセージ ID は QAnywhere Listener から取得できます。
備考
注意

このストアド・プロシージャは他のすべての QAnywhere ストアド・プロシージャとは異なり、デフォルトでは提供されていません。ユーザがストアド・プロシージャ ml_qa_listener_queue (queue はメッセージ・キューの名前) を作成すると、そのストアド・プロシージャは QAnywhere によって使用されます。

メッセージは接続で同期的に受信できますが、多くの場合は非同期で受信する方が便利です。特定のアドレスを持つメッセージがキューに登録された場合に呼び出されるストアド・プロシージャを作成できます。このプロシージャの名前は、ml_qa_listener_queue (queue はメッセージ・キューの名前) にする必要があります。このようなプロシージャが存在する場合、そのプロシージャは、指定されたアドレスを持つメッセージがキューに登録されるたびに呼び出されます。

このプロシージャは別の接続から呼び出されます。このプロシージャの実行中に SQL エラーが発生しないかぎり、メッセージの確認とコミットは自動的に行われます。

注意

このプロシージャ内では、コミットやロールバックを実行しないでください。

キューの名前は QAnywhere アドレスの一部です。詳細については、QAnywhere メッセージ・アドレスを参照してください。

参照

次の例では、アドレス executesql を持つメッセージがキューに登録されるたびに呼び出されるプロシージャを作成します。この例のプロシージャでは、メッセージの内容が、現在のデータベースに対して実行できる SQL 文であるものと想定しています。

CREATE PROCEDURE ml_qa_listener_executesql(IN @msgid VARCHAR(128))
begin
 DECLARE @execstr LONG VARCHAR;
 SET @execstr = ml_qa_gettextcontent( @msgid );
 EXECUTE IMMEDIATE @execstr;
end