VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

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)