Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用触发器中的存储过程?SQL_Sql_Oracle_Plsql - Fatal编程技术网

调用触发器中的存储过程?SQL

调用触发器中的存储过程?SQL,sql,oracle,plsql,Sql,Oracle,Plsql,--触发 如果用户是否在工作时间尝试执行某些操作,并且触发器确保不允许用户在工作时间插入或更新表job_history,则我的过程应该有效 我已经做了好几个小时了,我找不到什么错误的帮助plz,我应该如何通过我的触发器调用我的程序 谢谢只需使用时间检查: 创建触发器模块作业历史记录 在插入或更新作业历史记录之前 每行 开始 时间检查; 结束mod_job_历史记录; / 此外,由于JOUR最初设置为NULL,并且您在WHERE子句中与之进行比较,因此您的过程将无法正常工作 您可以使用以下过程(

--触发

如果用户是否在工作时间尝试执行某些操作,并且触发器确保不允许用户在工作时间插入或更新表job_history,则我的过程应该有效

我已经做了好几个小时了,我找不到什么错误的帮助plz,我应该如何通过我的触发器调用我的程序


谢谢

只需使用
时间检查

创建触发器模块作业历史记录
在插入或更新作业历史记录之前
每行
开始
时间检查;
结束mod_job_历史记录;
/
此外,由于
JOUR
最初设置为
NULL
,并且您在
WHERE
子句中与之进行比较,因此您的过程将无法正常工作

您可以使用以下过程(无论您使用哪种语言,该过程都有效):

创建过程时间\u检查
作为
天PLS_整数:=TRUNC(SYSDATE)-TRUNC(SYSDATE,'IW');
从天到秒的时间间隔:=(SYSDATE-TRUNC(SYSDATE))从天到秒;
开始
如果(0,1,2,3,4中的一天)--周一到周五
以及间隔“8”小时之间的时间
间隔22小时
)
或
(天=5——星期六)
以及间隔'08'小时之间的时间
间隔12小时
)
然后
--营业时间内
无效的
其他的
提出申请错误(-20111,“营业时间以外”);
如果结束;
结束;
/

dbfiddle

您正在使用哪些数据库管理系统?上面的代码是特定于产品的。Oracle Sql Developer您是否告诉我们出了什么问题?我的触发器不完整我真的不知道如何正确调用我的过程只需编写
TIME\u CHECK
调用该过程。然而,这个过程有严重的问题,所以你不会得到你期望的结果。
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;
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;