指定された QAnywhere メッセージアドレス宛ての待機中のメッセージがあるかどうかを同期的にチェックするには、このストアドプロシージャーを使用します。指定された QAnywhere アドレス宛てのメッセージが発生した場合に、非同期で SQL
プロシージャーを呼び出すには、Mobile Link Listener を使用します。
返されるメッセージ ID に対応するメッセージが受信されたとみなされるのは、現在のトランザクションがコミットされた後です。受信がコミットされたメッセージは、このストアドプロシージャーやいかなる QAnywhere API でも受信することができません。同様に、現在のトランザクションがロールバックされると、メッセージが受信されていないことを意味します。このため、以降の
ml_qa_getmessage の呼び出しで同じメッセージ ID が返される可能性があります。
begin
declare @msgid varchar(128);
loop
set @msgid = ml_qa_getmessagetimeout( 'myaddress', 10000 );
if @msgid is null then
message 'waiting for a message...';
else
message 'a message with content ' || ml_qa_gettextcontent( @msgid ) || ' has been received';
commit;
end if;
end loop;
end