Oracle 触发器中使用游标

简介: 为表ANNOUNCEMENT创建插入触发器,原先设计的库是先将选择的所有人员插入到ANNOUNCEMENTORG表中,然后在ANNOUNCEMENT表中插入其他相关信息。

为表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;



相关文章
|
1月前
|
SQL 存储 Oracle
Oracle系列十四:触发器
Oracle系列十四:触发器
|
7天前
|
缓存 Oracle 关系型数据库
Oracle中的触发器与序列:自增列的魔法组合
【4月更文挑战第19天】Oracle数据库中,通过触发器和序列的组合可实现自增列功能。序列充当自动计数器,提供递增数值,而触发器则在插入新记录时自动分配序列值。创建序列如`CREATE SEQUENCE emp_seq START WITH 1 INCREMENT BY 1 NOCACHE`,然后创建触发器`TRIGGER trg_employees_before_insert`在`BEFORE INSERT`时将序列的下一个值赋予`employee_id`。这种方式使得在插入记录时无需手动设置ID,提高了效率。但使用时需注意序列状态、并发性和性能优化。
|
7天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL游标属性:数据的“导航仪”与“仪表盘”
【4月更文挑战第19天】Oracle PL/SQL游标属性如同车辆的导航仪和仪表盘,提供丰富信息和控制。 `%FOUND`和`%NOTFOUND`指示数据读取状态,`%ROWCOUNT`记录处理行数,`%ISOPEN`显示游标状态。还有`%BULK_ROWCOUNT`和`%BULK_EXCEPTIONS`增强处理灵活性。通过实例展示了如何在数据处理中利用这些属性监控和控制流程,提高效率和准确性。掌握游标属性是提升数据处理能力的关键。
|
1月前
|
SQL 存储 Oracle
Oracle系列十三:游标
Oracle系列十三:游标
|
3月前
|
存储 SQL 关系型数据库
触发器和游标区别
触发器(Trigger)和游标(Cursor)是关系型数据库中常见的两个概念,它们在功能和使用上有一些区别。下面是触发器和游标的主要区别:
187 1
|
4月前
|
存储 SQL Oracle
|
4月前
|
存储 SQL 关系型数据库
MySQL基础-变量/流程控制/游标/触发器
MySQL基础-变量/流程控制/游标/触发器
|
6月前
|
SQL 存储 Oracle
Oracle触发器----你会教对象触发嘛
Oracle触发器----你会教对象触发嘛
|
7月前
|
SQL 存储 Oracle
Oracle 游标&子程序&触发器
游标的作用:处理多行数据,类似与java中的集合
50 0
|
10月前
|
SQL 存储 Oracle
oracle触发器和webservice数据推送
oracle触发器和webservice数据推送
88 0

推荐镜像

更多