create or replace trigger t_imp_pmc_schedule_check
before insert or update on imp_pmc_schedule
for each row
begin
--以生产数据计算周期的时间为标准,卡控历史记录和一天之内的计划不能编辑
if length(trim(:new.productspec)) < 16 then
raise_application_error(-20003, '物料号长度不能小于16位');
end if;
if length(trim(:new.productspec)) > 16 then
raise_application_error(-20004, '物料号长度不能大于16位');
end if;
if trim(:new.plan) = '最新' then
--08:30 以前
if sysdate < trunc(SYSDATE) + 510 / 1440 then
if (:new.date_time) <= trunc(sysdate + 0) then
raise_application_error(-20001,
'不能编辑历史记录和一日之内计划(当天)');
end if;
else
-- 08:30以后
if sysdate > trunc(SYSDATE) + 510 / 1440 then
if (:new.date_time) <= trunc(sysdate + 0) then
raise_application_error(-20002,
'不能编辑历史记录和一日之内计划(当天)');
end if;
end if;
end if;
end if;
if trim(:new.plan) = '月初' then
--1号,2号,3号传月初计划
if to_char(:new.date_time, 'yyyyMM') = to_char(sysdate, 'yyyyMM') then
if trunc(sysdate) > trunc(sysdate, 'MM') + 2 and
trunc(sysdate) < trunc(last_day(sysdate)) then
raise_application_error(-20003, '月初目标不能在3号以后修改!');
end if;
else
if to_char(:new.date_time, 'yyyyMM') < to_char(sysdate, 'yyyyMM') then
raise_application_error(-20003, '历史月初目标不能上传!');
end if;
end if;
end if;
end;
trigger卡控抛出自定义异常原因
最新推荐文章于 2022-09-14 10:27:25 发布