[英]Call a stored procedure in a trigger? SQL
CREATE OR REPLACE PROCEDURE TIME_CHECK
as
JOUR date;
HEURE date;
BEGIN
select to_char(sysdate, 'DAY'), to_char(sysdate,'HH.MI.SS')
into jour, heure
FROM DUAL
WHERE JOUR = to_char(sysdate, 'DAY') AND HEURE = to_char(sysdate,'HH.MI.SS');
if (jour not between 'SUNDAY' AND 'FRIDAY') and (heure not between '08.00.00' AND '22.00.00')
or (jour !='SATURDAY') AND (HEURE NOT BETWEEN '08.00.00' AND '12.00.00')
then raise_application_error(-20111,'OUT OF BUSINESS HOURS');
end if;
end;
-- TRIGGER - 扳机
CREATE OR REPLACE TRIGGER mod_job_history
before insert or update on JOB_HISTORY
for each row
BEGIN
CALL TIME_CHECK
---??????
END mod_job_history;
My procedure is supposed to valid if the user is trying to do something on business hours or not and the trigger is to be sure that the user is not allowed to insert or update the table job_history on business hours?如果用户尝试在营业时间做某事,我的程序应该有效,并且触发器是确保不允许用户在营业时间插入或更新表 job_history?
I've been working on it for several hours and I cannot find what's wrong help plz and how should I call my procedure via my trigger我已经工作了几个小时,但我找不到问题的帮助,我应该如何通过触发器调用我的程序
thank you谢谢你
Just use TIME_CHECK;
只需使用
TIME_CHECK;
: :
CREATE TRIGGER mod_job_history
before insert or update on JOB_HISTORY
for each row
BEGIN
TIME_CHECK;
END mod_job_history;
/
Also, your procedure will not work as intended as JOUR
is initially set to NULL
and the you are comparing against it in the WHERE
clause.此外,您的程序将无法按预期工作,因为
JOUR
最初设置为NULL
并且您在WHERE
子句中与它进行比较。
You can use the procedure below (which will work regardless of which language you use):您可以使用以下过程(无论您使用哪种语言,该过程都有效):
CREATE PROCEDURE TIME_CHECK
AS
day PLS_INTEGER := TRUNC(SYSDATE) - TRUNC(SYSDATE, 'IW');
time INTERVAL DAY TO SECOND := (SYSDATE - TRUNC(SYSDATE)) DAY TO SECOND;
BEGIN
IF ( day IN (0, 1, 2, 3, 4) -- Monday to Friday
AND time BETWEEN INTERVAL '8' HOUR
AND INTERVAL '22' HOUR
)
OR
( day = 5 -- Saturday
AND time BETWEEN INTERVAL '08' HOUR
AND INTERVAL '12' HOUR
)
THEN
-- Inside business hours
NULL;
ELSE
raise_application_error(-20111,'OUT OF BUSINESS HOURS');
END IF;
END;
/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.