DBMS_ALERT
- 支持数据库事件(警报)的异步通知
函数名 | 参数类型 | 结果类型 | 描述 |
register | name text | void | 用于注册预警事件 |
remove | name text | void | 用于删除会话不需要的预警事件. |
removeall | null | void | 用于删除当前会话所有已注册的预警事件 |
set_defaults | sensitivity double precision | void | 用于设置检测预警事件的时间间隔,默认时间间隔为5秒 |
signal | _event text, _message text | void | 表示警报。信号调用的效果仅在其所在的事务提交时发生。如果事务回滚,则信号无效。 |
waitany | OUT name text, OUT message text, OUT status integer, timeout double precision | record | 用于等待当前会话的任何预警事件,并且在预警事件发生时输出相应信息。 |
waitone | name text, OUT message text, OUT status integer, timeout double precision | record | 用于等待当前会话的特定预警事件,并且在发生预警事件时输出预警消息。 |
会话1:接受进程(客户端接收)
do language plpgsql $$
declare
V_ALERTNAME text := 'alert1';
V_STATUS integer;
V_MSG text;
begin
DBMS_ALERT.REGISTER(V_ALERTNAME); --注册要接收信息的警报器
DBMS_ALERT.WAITONE('alert1',100);
IF V_STATUS != 0 THEN
RAISE NOTICE 'error';
ELSE
RAISE NOTICE '%',V_MSG;
END IF;
end;
$$;
会话2:发送进程(服务器端发出)
do language plpgsql $$
declare
V_ALERTNAME VARCHAR2(30) := 'alert1';
BEGIN
DBMS_ALERT.SIGNAL('alert1', 'hello, this is sending process!');
end;
$$;