Oracle 觸發器中使用遊標
為表ANNOUNCEMENT建立插入觸發器,原先設計的庫是先將選擇的所有人員插入到ANNOUNCEMENTORG表中,然後在ANNOUNCEMENT表中插入其他相關資訊。
表ANNOUNCEMENTORG中的ANNOUNCEMENTCODE和ANNOUNCEMENT中的CODE關聯。
create or replace trigger TR_ANNOUNCEMENT_SYIT
after insert on ANNOUNCEMENT
for each row
declare
v_usercode ANNOUNCEMENTORG.Relationcode%TYPE; --宣告一個臨時變數,用來儲存使用者名稱
ucode varchar2(200);
phoneNumber varchar2(20);
deptName varchar2(50);
Cursor cur_usercode is
--宣告一個遊標,用來儲存查詢出來的人員名
select relationcode from ANNOUNCEMENTORG where ANNOUNCEMENTCODE=:new.CODE;
begin
select ORGNAME into deptName from hefeiuums.sys_organization where ORGID=(select ORGID from hefeiuums.sys_User where username=:new.PUBLISHER);
open cur_usercode;
loop
fetch cur_usercode into v_usercode;
exit when cur_usercode%NOTFOUND; --讀到最後一條語句後退出
select mobile into phoneNumber from hefeiuums.sys_User where usercode=v_usercode;
--當手機號碼不為空,進行資料插入
if phoneNumber is not null then
insert into T_OASMS(phone,content,sender,sendernm) values(phoneNumber,deptName||'通知:'||:new.TITLE||',已傳送到您的數字排水後臺,請登入平臺查收!',:new.PROMUGATOR,:new.PUBLISHER);
end if;
end loop;
close cur_usercode;
end;
為FLOWDOCSTATE表建立熱線流程下一步簡訊通知功能:
create or replace trigger TR_FLOWDOCSTATE_SYIT
after insert on FLOWDOCSTATE
for each row
declare
v_userphone hefeiuums.sys_User.MOBILE%TYPE; --宣告一個臨時變數,用來儲存手機號
title varchar2(200); --熱線標題
phone varchar2(20); --分管領導手機號碼
v_phone2 varchar2(20); --部門所有人員手機號碼
uname varchar2(20);
deptName varchar2(20);
Cursor cur_userphone is
select MOBILE from hefeiuums.sys_User where ORGID=:new.ACCOUNTABLEUNIT; --宣告一個遊標,用來儲存根據部門名稱查詢出來的手機號碼
begin
if :new.WORKFLOWCODE='HotLineCase' then
select CASETITLE into title from Case where CASECODE=:new.DOCCODE;
if :new.ACCOUNTABLEUSER is not null then
select mobile into phone from hefeiuums.sys_User where usercode=:new.ACCOUNTABLEUSER;
select username into uname from hefeiuums.sys_User where usercode=:new.ACCOUNTABLEUSER;
if phone is not null then
--給流程的下一步接收者傳送訊息
insert into T_OASMS(phone,content,sender,sendernm) values(phone,'有新的熱線資訊:'||title||',請登入辦公系統及時處理!',uname,uname);
end if;
elsif :new.ACCOUNTABLEUNIT is not null then
--遊標遍歷
open cur_userphone;
loop
fetch cur_userphone into v_phone2;
exit when cur_userphone%NOTFOUND; --讀到最後一條語句後退出
if v_phone2 is not null then
--給流程的所有部門接收者傳送訊息
select ORGNAME into deptName from hefeiuums.sys_organization where ORGID=:new.ACCOUNTABLEUNIT;
insert into T_OASMS(phone,content,sender,sendernm) values(v_phone2,'有新的熱線資訊:'||title||',請登入辦公系統及時處理!',deptName,deptName);
end if;
end loop;
close cur_userphone;
end if;
end if;
end;
相關文章
- Oracle觸發器Oracle觸發器
- Oracle觸發器觸發級別Oracle觸發器
- Oracle中觸發器的應用 (zt)Oracle觸發器
- oracle遊標使用全解Oracle
- Oracle 遊標使用全解Oracle
- [轉]oracle 遊標使用大全Oracle
- Oracle 遊標使用大全(轉)Oracle
- Oracle遊標使用大全(轉)Oracle
- Oracle Instead of 觸發器的使用Oracle觸發器
- ORACLE DDL觸發器Oracle觸發器
- Oracle之觸發器Oracle觸發器
- oracle ddl 觸發器Oracle觸發器
- Oracle觸發器6(建立系統事件觸發器)Oracle觸發器事件
- 根據業務寫觸發器(oracle觸發器片)觸發器Oracle
- Oracle開發基礎-遊標Oracle
- SQL Server中類似Oracle中before觸發器SQLServerOracle觸發器
- Oracle使用cursor for隱式遊標Oracle
- ORACLE觸發器詳解Oracle觸發器
- Oracle登陸觸發器Oracle觸發器
- oracle 觸發器-表同步Oracle觸發器
- Oracle 登入觸發器Oracle觸發器
- oracle 觸發器 client 事件Oracle觸發器client事件
- MySQL使用觸發器MySql觸發器
- Oracle遊標Oracle
- Oracle 遊標Oracle
- Oracle顯示遊標的使用及遊標for迴圈Oracle
- oracle遊標簡單使用小記Oracle
- oracle 遊標中使用 動態 sqlOracleSQL
- Oracle資料庫遊標使用大全Oracle資料庫
- Oracle開發基礎-觸發器Oracle觸發器
- 觸發器中操作LOB觸發器
- oracle 批量刪除觸發器Oracle觸發器
- oracle 觸發器的例項Oracle觸發器
- Oracle 觸發器 限制DDL操作Oracle觸發器
- Oracle中審計刪除(DELETE)操作的觸發器Oracledelete觸發器
- oracle 觸發器實現禁止在資料庫中建立dblink ---透過觸發器實現Oracle觸發器資料庫
- Oracle遊標示例Oracle
- Oracle遊標大全Oracle