ITPub博客

首页 > 数据库 > Oracle > 关于dbms_alert 另一个会话里监视表的动态

关于dbms_alert 另一个会话里监视表的动态

原创 Oracle 作者:bid01 时间:2015-04-26 19:53:34 0 删除 编辑
首先是关于新建一个会话 对scott用户赋予权限
grant execute on dbms_alert to scott;
在scott 用户下注册一个警报
exec dbms_alert.register('baojing');

第二步
var a varchar2(200);
var b number;
exec dbms_alert.waitone('baojing',:a,:b);
这是后会无限的等待知道另一个会话执行dbms_alert.signal();


打开另一个会话
scott下建一个对emp的触发器
create trigger test 
after insert or delete or update on emp
begin
dbms_alert.signal('baojing','table emp has changed');
end test;

例如在emp表中插入一行数据这时候观察第一个会话
insert into emp(enpno,ename) values(0001,'xiaowang');
commit;

会发现第一个会话立刻就不等待了直接执行完成

这时候在 print :a
则显示 table emp has changed



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30163683/viewspace-1603947/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-03-14

  • 博文量
    8
  • 访问量
    31807