Oracle触发器

create or replace procedure get_name(v_id in number, v_name out varchar2) as
begin
select addr into v_name from student_info where stu_id = v_id;
exception
when no_data_found then
raise_application_error(-20001, '你输入的ID不存在!');
end get_name;

/***********delete触发器 **********/
create or replace
TRIGGER "TRWATCH" AFTER
  DELETE ON WATCH FOR EACH ROW DECLARE watchname VARCHAR2(30);
  watchphone VARCHAR2(30);
  starttime DATE;
  endtime DATE;
  wwid   VARCHAR2(14);
  flag   INT;
  counts INT;
  BEGIN
    --deleted --> :old
    watchname  := :old.WATCHNAME;
    watchphone := :old.WATCHPHONE;
    starttime  := :old.STARTTIME;
    endtime    := :old.ENDTIME;
    wwid       := :old.WWID;
    flag       := :old.FLAG;
    IF flag     = 0 THEN
      SELECT COUNT(*)
      INTO counts
      FROM HIS_WATCH
      WHERE rownum  =1
      AND WATCHNAME =watchname
      AND WATCHPHONE=watchphone
      AND WWID      =wwid
      AND FLAG      = 0;
      IF counts     > 0 THEN
        UPDATE HIS_WATCH
        SET FLAG       =1,
          ENDTIME      =sysdate
        WHERE WATCHNAME=watchname
        AND WATCHPHONE =watchphone
        AND WWID       =wwid
        AND FLAG       = 0;
      END IF;
    END IF;
  END;
 
 
/******************** insert、update触发器*******************/ 
 
 create or replace
TRIGGER "TRWATCH1" AFTER
  INSERT OR
  UPDATE ON WATCH FOR EACH ROW DECLARE watchname VARCHAR2(30);
  watchphone VARCHAR2(30);
  starttime DATE;
  endtime DATE;
  wwid   VARCHAR2(14);
  flag   INT;
  counts INT;
  BEGIN
    ----inserted --> :new
    watchname  := :new.WATCHNAME;
    watchphone := :new.WATCHPHONE;
    starttime  := :new.STARTTIME;
    endtime    := :new.ENDTIME;
    wwid       := :new.WWID;
    flag       := :new.FLAG;
    IF flag     = 0 THEN
      SELECT COUNT(*)
      INTO counts
      FROM HIS_WATCH
      WHERE rownum  =1
      AND WATCHNAME =watchname
      AND WATCHPHONE=watchphone
      AND WWID      =wwid
      AND FLAG      = 0;
      IF counts     > 0 THEN
        UPDATE HIS_WATCH
        SET FLAG       =1,
          ENDTIME      =sysdate
        WHERE WATCHNAME=watchname
        AND WATCHPHONE =watchphone
        AND WWID       =wwid
        AND FLAG       = 0;
      END IF;
      INSERT
      INTO HIS_WATCH
        (
          WATCHNAME,
          WATCHPHONE,
          STARTTIME,
          WWID,
          FLAG
        )
        VALUES
        (
          watchname,
          watchphone,
          sysdate,
          wwid,
          0
        );
    ELSE
      SELECT COUNT(*)
      INTO counts
      FROM HIS_WATCH
      WHERE rownum  =1
      AND WATCHNAME =watchname
      AND WATCHPHONE=watchphone
      AND WWID      =wwid
      AND FLAG      = 0;
      IF counts     > 0 THEN
        UPDATE HIS_WATCH
        SET FLAG       =1,
          ENDTIME      =sysdate
        WHERE WATCHNAME=watchname
        AND WATCHPHONE =watchphone
        AND WWID       =wwid
        AND FLAG       = 0;
      END IF;
    END IF;
  END;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值