Oracle高级队列(Advanced Queue)简单实例

所属分类: 数据库 / oracle 阅读数: 583
收藏 0 赞 0 分享

Oracle高级队列(Advanced Queue)简单实例

最简单的高级队列的练习,基本上都使用了默认参数。

-- Create Type
create or replace type note as Object(
 subject varchar2(100),
 Content varchar2(2000),CreateTime date
);

-- Create queue table
begin
 sys.dbms_aqadm.create_queue_table(
  queue_table => 'NOTETAB',
  queue_payload_type => 'TEST.NOTE'
end;

--create queue
begin
 sys.dbms_aqadm.create_queue(
  queue_name => 'NOTEQ',
  queue_table => 'NOTETAB',
  queue_type => sys.dbms_aqadm.normal_queue,
  max_retries => 5,
  retry_delay => 0,
  retention_time => 0);
end;

--enqueue
declare
v_Message note;
v_MsgId RAW(16);
v_options DBMS_AQ.ENQUEUE_OPTIONS_T;
v_properties DBMS_AQ.MESSAGE_PROPERTIES_T;
v_Recipients DBMS_AQ.AQ$_RECIPIENT_LIST_T;
begin
   v_Message:=note(subject => 'note3',Content => 'content3',createTime => sysdate);

--   v_Recipients(0) := sys.aq$_agent('NOTE','MTQ',0);
--   v_properties.recipient_list := v_Recipients;
   v_options.visibility :=DBMS_AQ.IMMEDIATE;
   dbms_aq.enqueue(queue_name => 'noteq',enqueue_options => v_options,message_properties => v_properties,payload => v_Message,msgid => v_MsgId);
   dbms_output.put_line('encode success,msgid is '||v_MsgId);

end;

--dequeue
declare
v_Message note;
v_MsgId RAW(16);
v_options DBMS_AQ.DEQUEUE_OPTIONS_T;
v_properties DBMS_AQ.MESSAGE_PROPERTIES_T;
v_Recipients DBMS_AQ.AQ$_RECIPIENT_LIST_T;
begin

--   v_Recipients(0) := sys.aq$_agent('NOTE','MTQ',0);
--   v_properties.recipient_list := v_Recipients;
   v_options.visibility :=DBMS_AQ.IMMEDIATE;
   dbms_aq.dequeue(queue_name => 'noteq',dequeue_options => v_options,message_properties => v_properties,payload => v_Message,msgid => v_MsgId);
   dbms_output.put_line('decode success,msgid is '||v_MsgId);
   dbms_output.put_line('subject is '||v_Message.subject);
   dbms_output.put_line('Content is '||v_Message.Content);
   dbms_output.put_line('createTime is '||to_char(v_Message.createTime,'yyyy-mm-dd hh24:mi:ss'));
end;

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

更多精彩内容其他人还在看

Oracle 子程序参数模式,IN,OUT,NOCOPY

Oracle 子程序参数模式主要有IN,OUT,NOCOPY,IN和OUT可以组合,OUT和NOCOPY也可以组合使用.
收藏 0 赞 0 分享

Oracle 存储过程加密方法

Oracle 存储过程加密方法,需要的朋友可以参考下。
收藏 0 赞 0 分享

oracle 多个字符替换实现

CSDN上的一个网友,需要一个sql语句的解决方案需求是这样的求写oracle多个字符替换(有测试数据)
收藏 0 赞 0 分享

Oracle 存储过程教程

一个简单的oracle分页存储过程的实现和调用。在看了众多的分页存储过程以后发现都是针对sqlserver的,而没有oracle的,因此想写一个关于oracle的存储过程,因为我用到的数据库是oracle。
收藏 0 赞 0 分享

oracle 更改数据库名的方法

这两天一朋友问如何更改数据库名,于是做个测试,简单记录下,以便说明问题。
收藏 0 赞 0 分享

Oracle 分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法

Oracle分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法,需要的朋友可以参考下。
收藏 0 赞 0 分享

Oracle字符集修改查看方法

Oracle字符集修改查看方法,需要的朋友可以参考下。
收藏 0 赞 0 分享

一些实用的sql语句

一些实用的sql,需要的朋友可以参考下。
收藏 0 赞 0 分享

Oracle中sys和system的区别小结

SYS用户具有DBA权限,并且拥有SYS模式,只能通过SYSDBA登陆数据库。是Oracle数据库中权限最高的帐号 SYSTEM具有DBA权限。但没有SYSDBA权限。平常一般用该帐号管理数据库就可以了。
收藏 0 赞 0 分享

oracle 存储过程和触发器复制数据

oracle 存储过程和触发器复制数据的代码,需要的朋友可以参考下。
收藏 0 赞 0 分享
查看更多