问:CQN dbms_cq_notification.cq_notification_queryid

问题描述 投票:0回答:1

什么是“dbms_cq_notification.cq_notification_queryid”在这个SELECT上做什么?我只是在学习CQN。我也相信mgr_id没有被使用或是吗?

DECLARE
  reginfo    cq_notification$_reg_info;
  mgr_id     NUMBER;
  dept_id    NUMBER;
  v_cursor   SYS_REFCURSOR;
  regid      NUMBER;
  qosflags   NUMBER;  

BEGIN
  qosflags := DBMS_CQ_NOTIFICATION.QOS_QUERY + DBMS_CQ_NOTIFICATION.QOS_ROWIDS;
  reginfo  := cq_notification$_reg_info('chnf_callback', qosflags,0, 0, 0);
  regid    := DBMS_CQ_NOTIFICATION.NEW_REG_START(reginfo);

  OPEN v_cursor FOR 
    SELECT DBMS_CQ_NOTIFICATION.CQ_NOTIFICATION_QUERYID, 
           manager_id
    FROM HR.employees
    WHERE employee_id = 7902;
  CLOSE v_cursor;

  OPEN v_cursor for
    SELECT DBMS_CQ_NOTIFICATION.CQ_NOTIFICATION_QUERYID, 
           department_id
    FROM HR.departments
    WHERE department_name = 'IT';
  CLOSE v_cursor;

  DBMS_CQ_NOTIFICATION.REG_END;
END;

我从这里拿出来的https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_cqnotif.htm#ARPLS65637

oracle
1个回答
0
投票

假设您注册了“n”个查询。

一小时后,您的应用程序将收到通知,注册查询的结果已更改。它是哪个查询?你怎么知道的 ?这就是ID的用途。可以通知您的通知客户端哪个查询导致通知。如果您不关心哪个查询启动了该事件,则不需要它。

© www.soinside.com 2019 - 2024. All rights reserved.