BEFORE insert ON RQC_RECORD
FOR EACH ROW
DECLARE
NEW_TIME VARCHAR2(8);
START_TIME VARCHAR2(8);
END_TIME VARCHAR2(8);
INSERT_EXCE exception;
BEGIN
NEW_TIME := to_char(sysdate,'hh24:mi');
select starttime into START_TIME from rqc_worktime;
select endtime into END_TIME from rqc_worktime;
-- dbms_output.put_line(:new.recordtypeno);
-- 得到要插入行的recordtypeno是否爲開關機,並且判斷當前時間是否爲營業時間,如果條件都成立則不讓插入數據,拋出異常
if ((:new.recordtypeno = '010' or :new.recordtypeno = '011') and (NEW_TIME >= START_TIME and NEW_TIME <= END_TIME))
then raise INSERT_EXCE;
end if;
-- exception when INSERT_EXCE then dbms_output.put_line('在營業時間內進行正常開關機');
exception when INSERT_EXCE then raise_application_error('-20002', '在營業時間內進行正常開關機');
END;
注::new可獲取插入的字段值。
raise_application_error用來拋異常,阻止插入。
oracle中時間可以比較大小。
to_char(sysdate,'hh24:mi');可以獲取當前時間,後面的爲格式。