创建通知处理程序
现在,您可以创建一个通知处理程序,它将借助于上面介绍的 sendNotification
过程向客户端发送更改通知。来看一看“清单 2”中的 PL/SQL 过程 orders_nf_callback。
清单 2.
处理对 OE.ORDERS 表所做更改的通知的通知处理程序
CREATE OR REPLACE PROCEDURE orders_nf_callback (ntfnds IN SYS.CHNF$_DESC) IS <br />tblname VARCHAR2(60); <br />numtables NUMBER; <br />event_type NUMBER; <br />row_id VARCHAR2(20); <br />numrows NUMBER; <br />ord_id VARCHAR2(12); <br />url VARCHAR2(256) := 'http://webserverhost/phpcache/dropResults.php?order_no='; <br />BEGIN <br />event_type := ntfnds.event_type; <br />numtables := ntfnds.numtables; <br />IF (event_type = DBMS_CHANGE_NOTIFICATION.EVENT_OBJCHANGE) THEN <br />FOR i IN 1..numtables LOOP <br />tblname := ntfnds.table_desc_array(i).table_name; <br />IF (bitand(ntfnds.table_desc_array(i).opflags, <br />DBMS_CHANGE_NOTIFICATION.ALL_ROWS) = 0) THEN <br />numrows := ntfnds.table_desc_array(i).numrows; <br />ELSE <br />numrows :=0; <br />END IF; <br />IF (tblname = 'OE.ORDERS') THEN <br />FOR j IN 1..numrows LOOP <br />row_id := ntfnds.table_desc_array(i).row_desc_array(j).row_id; <br />SELECT order_id INTO ord_id FROM orders WHERE rowid = row_id; <br />sendNotification(url, tblname, ord_id); <br />END LOOP; <br />END IF; <br />END LOOP; <br />END IF; <br />COMMIT; <br />END; <br />/ <br />
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号