create or replace trigger TR_BM_YD0000_BINSERT before insert or update on BM_YD0000 REFERENCING OLD as OLD NEW as NEW for each ROW declare QYNBF0 XT_XTCS00.VALUE0%TYPE; vcount integer; vYPBM varchar(20); FirstLter varchar(1); V_YYGXH varchar(3); -- MODifICATIon HISTorY -- Person Date Comments -- YANGH 2006-09-26 启用农本方参数后,浓缩比例不能为空;未启用默认为零 -- YANGH 2007-03-07 省二二化库使用的药品,药品编码必须是E打头 -- YANGH 2007-08-01 如果药品未输入浓缩比例,默认为1 -- chenhn 2016.12.07 修改浓缩比例的修改限制 by YK-20161128-001 -- --------- ---------- -------------------------------------------------- begin begin select trim(VALUE0) into QYNBF0 from XT_XTCS00 where NAME00='YK_QYNBFJK'; exception when others then QYNBF0:='N'; end; begin select trim(VALUE0) into V_YYGXH from XT_XTCS00 where NAME00='YK_YYGXH'; exception when others then V_YYGXH:='0'; end; FirstLter:=substr(:NEW.YPBM00,1,1); if (QYNBF0='Y') and (trim(:NEW.NSBL00) is null) then :NEW.NSBL00:=1; --RAISE_APPLICATIon_ERRor(-20910, '更新表BM_YD0000时发生错误,浓缩比例输入有误*'||TO_CHAR(SQLCODE)||SQLERRM); end if; if (QYNBF0='Y') and (:NEW.NSBL00 =0) then RAISE_APPLICATIon_ERRor(-20910, '更新表BM_YD0000时发生错误,浓缩比例输入有误*'||TO_CHAR(SQLCODE)||SQLERRM); end if; if (QYNBF0='N') and (:NEW.NSBL00 is null) then :NEW.NSBL00:=1; end if; if V_YYGXH='4' then --二化库使用的药品,药品编码必须是E打头 YANGH 20070307 vYPBM:= :NEW.YPBM00; select count(*) into vcount from BM_BMBM00 where YYID00='B' and BMXZ00='6' and BMBH00= :NEW.YKBMBH ; if (vcount>0) and (FirstLter<>'E') then :NEW.YPBM00:='E'||vYPBM; end if; end if; end TR_BM_YD0000_BFINS; /