DBMS_ALERT
- 用于生成并传递数据库警报信息,是Oracle内部提供的一种在数据库内部和应用程序间通信的一种方式。
函数名 |
参数类型 |
结果类型 |
描述 |
register |
text |
null |
注册当前会话接受指定的警报 |
remove |
text |
null |
将不再感兴趣的警报从当前会话的已注册警报列表中移除 |
removeall |
null |
null |
将所有警报从当前会话的已注册警报列表中移除 |
signal |
text,text |
null |
为指定警报发出信号 |
waitany |
text,text,integer,float8 |
record |
等待任何已注册的警报出现 |
waitone |
text,text,integer,float8 |
record |
等待指定的警报出现 |
---传递多个数据库警报信息,接收最近一次信息
会话1执行:
select dbms_alert.remove('alert1');
select dbms_alert.register('alert1');
会话2发送进程(收服务器端发出):
BEGIN;
select DBMS_ALERT.SIGNAL('alert1', 'hello,this is sending process!');
select DBMS_ALERT.SIGNAL('alert1', 'hello,this is sending process!!');
select DBMS_ALERT.SIGNAL('alert1', 'hello,this is sending process!!!');
COMMIT
会话1接收进程(客户端接):
vastbase=# select DBMS_ALERT.WAITONE('alert1',100);
waitone
----------------------------------------
("hello,this is sending process!!!",0)
(1 row)
---去除对所有指定警报的注册
select DBMS_ALERT.REGISTER('topic1');
select DBMS_ALERT.REGISTER('topic2');
select DBMS_ALERT.REMOVEALL();
---使用dbms_alert产生警报的事务,等待任何已注册的警报出现
会话1:接受进程(客户端接收):
select DBMS_ALERT.REMOVE('alert1');
select DBMS_ALERT.REGISTER('alert1');
会话2发送进程(服务器端发出):
BEGIN
select DBMS_ALERT.SIGNAL('alert1', 'hello,this is sending process!');
COMMIT
会话1:接受进程(客户端接收):
vastbase=# select DBMS_ALERT.WAITANY(100);
waitany
---------------------------------------------
(alert1,"hello,this is sending process!",0)
(1 row)