メッセージを非同期的に受信するために、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 |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |