Oracle触发器写法和举例

1、declare 声明变量后的每个变量都要加分号;
2、所有的语句结束和sql语句结尾,都要加分号;
3、变量赋值 variable :='1234'
   如:recordId := '1234';
4、插入列数据获取 :new.colname 
   如:new.exec_record_id
5、sql查询写入变量 select colname into variable
   如: select verify_date into execDate   from orders_executed_record where record_id='1234';

 

触发器举例:

CREATE OR REPLACE TRIGGER "TR_NUTRITION"
 after update on inp_bill_detail
  for each row
declare
    myexp exception;
    execDate date;
    recordId varchar2(30);
begin
    recordId :=:new.exec_record_id;
    if :new.exec_record_id is not null then
        select nvl(oen.verify_date,oer.execute_date_time) into execDate
        from orders_executed_record oer left join orders_executed_nutrition oen on oer.record_id=oen.record_id
        where oer.record_id = recordId ;
        if execDate is not null then
           raise myexp;
         end if;
    end if;
    exception
        when myexp then raise_application_error('-20002', '计费后,执行(核对)日期不能为空,计费ID=' || :new.detail_no || ' 执行ID=' || recordId);
end ;



   

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值