Streams Advanced Queuing User’s Guide(pl/sql)
Database JDBC Developer’s Guide
Oracle高级队列介绍
Database Change Notification’docs-jdbc-style
DCN plsql-style
CQN
设置消息队列
1 用户授权
1 | CONNECT / AS SYSDBA; |
2 创建队列表
1 | begin |
3 创建队列
1 | begin |
4 创建存储过程
1 | CREATE OR REPLACE PROCEDURE ENQUEUE_CATALOG_AQ(main_Key NUMBER, |
5 启动队列
1 | begin |
6 停止队列
1 | begin |
7 入队测试
1 | begin |
8 出队
1 | SET SERVEROUTPUT ON |
9 删除队列顺序
停止队列–》删除队列-》删除queue_table
注册表变化通知(DCN)
此部分只通知insert和update 变化
1 用户授权
1 | CONNECT / AS SYSDBA; |
2 修改用户线程数
1 | CONNECT / AS SYSDBA; |
3 创建存储过程
1 | CREATE OR REPLACE PROCEDURE chnf_callback(ntfnds IN cq_notification$_descriptor) AS |
4 注册
1 | DECLARE |
5 解除注册
1 | call DBMS_CHANGE_NOTIFICATION.DEREGISTER (regid IN NUMBER); |
存储过程增加日志方法
1 创建日志表
1 | -- Create table |
创建写日志存储过程
1 | CREATE OR REPLACE PROCEDURE prc_wlf_sys_writelog(i_flag INTEGER, |
调用
存储过程中加入异常捕获,并调用prc_wlf_sys_writelog
做日志调用1
2
3
4
5EXCEPTION
when others then
v_errmsg := 'sqlexception~~sqlcode:' || to_char(sqlcode) ||
' sqlstate:' || substr(sqlerrm, 1, 512);
prc_wlf_sys_writelog(2, 4, 'ENQUEUE_CATALOG_AQ', v_errmsg, '');