返されるメッセージ ID に対応するメッセージが受信されたとみなされるのは、現在のトランザクションがコミットされた後です。受信がコミットされたメッセージは、このストアドプロシージャーやいかなる QAnywhere API でも受信することができません。同様に、現在のトランザクションがロールバックされると、メッセージが受信されていないことを意味します。このため、以降の
ml_qa_getmessage の呼び出しで同じメッセージ ID が返される可能性があります。
begin
declare @msgid varchar(128);
loop
set @msgid = ml_qa_getmessage( 'myaddress' );
message 'a message with content ' || ml_qa_gettextcontent( @msgid ) || ' has been received';
commit;
end loop;
end