MQCreateVtiReceive() 函数会创建表,然后将其映射到 WMQ 管理的队列。
MQCreateVtiReceive() 函数会创建绑定到由 service_name 指定的队列的 table_name(使用 policy_name 中定义的服务质量策略)。如果从该表进行选择,将返回队列中的所有可用消息,并从队列中除去这些消息。如果没有任何消息可以返回,将不返回任何行。插入到绑定表会将消息放入队列。
create table table_name (
msg lvarchar(maxMessage),
correlid varchar(24),
topic varchar(40),
qname varchar(48),
msgid varchar(12),
msgformat varchar(8));
using "gbasedbt".mq (SERVICE = service_name,
POLICY = policy_name,
ACCESS = "RECEIVE");
| 用途 | 自变量解释 |
|---|---|
| MQCreateVtiReceive(arg1) | arg1 = table_name |
| MQCreateVtiReceive(arg1, arg2) | arg1 = table_name
arg2 = service_name |
| MQCreateVtiReceive(arg1, arg2, arg3) | arg1 = table_name
arg2 = service_name arg3 = policy_name |
| MQCreateVtiReceive(arg1, arg2, arg3, arg4) | arg1 = table_name
arg2 = service_name arg3 = policy_name arg4 = maxMessage |
begin;
EXECUTE FUNCTION MQCreateVtiRead('VtiReceiveTest');
commit;
INSERT INTO VtiReceiveTest(msg) values ('QMessage');
select * from VtiReceiveTest;
如果尝试再次读取队列,将不返回任何行,因为表是使用 MQCreateVtiReceive() 函数创建的,而该函数在读取条目时便会将其除去。