Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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
使用Next_Day函数的Sql触发器_Sql_Oracle_Triggers - Fatal编程技术网

使用Next_Day函数的Sql触发器

使用Next_Day函数的Sql触发器,sql,oracle,triggers,Sql,Oracle,Triggers,我正在尝试创建一个触发器,该触发器将检查导师是否在每次刷新记录时,在特定的一周内累积了15个小时的辅导。表上的每条记录等于一小时。一个导师的15个记录意味着15个小时。我可以让它计算导师的所有记录,但它应该根据插入函数插入的日期计算一周内的记录 Create or replace Trigger Tutor_15hr_Rule Before Insert on Meeting For each row Declare HoursWorked binary_integer; begin selec

我正在尝试创建一个触发器,该触发器将检查导师是否在每次刷新记录时,在特定的一周内累积了15个小时的辅导。表上的每条记录等于一小时。一个导师的15个记录意味着15个小时。我可以让它计算导师的所有记录,但它应该根据插入函数插入的日期计算一周内的记录

Create or replace Trigger Tutor_15hr_Rule
Before Insert on Meeting
For each row
Declare
HoursWorked binary_integer;
begin
select count(TutID)
into HoursWorked
from Meeting
where TutID = :new.TutID AND MeetDate Next_Day (:new.MeetDate, 'Saturday');
DBMS_OUTPUT.PUT_LINE(HoursWorked);
if (HoursWorked + 1) > 15 then
Raise_application_Error(-20002, 'exceeded no of hours');
end if;
end;
/
show error;

提前感谢所有能给我们带来启示的人

您可以使用各种格式的模型将日期转换为年和周,以及许多其他选项

SELECT to_char(CURRENT_DATE,'YYYY IW') FROM DUAL
要更改周初,可以在转换前添加天:

SELECT to_char(CURRENT_DATE + INTERVAL '2' DAY,'YYYY IW') FROM DUAL

我想分享最后的代码。工作完美!!!谢谢你,布莱恩

Create or replace Trigger Tutor_15hr_Rule
Before Insert on Meeting
For each row
Declare
HoursWorked binary_integer;
begin
select count(TutID)
into HoursWorked
from Meeting
where TutID = :new.TutID AND WorkWeek = (Select to_char(:new.MeetDate, 'YYYY IW') From Dual);
DBMS_OUTPUT.PUT_LINE(HoursWorked);
if (HoursWorked + 1) > 15 then
Raise_application_Error(-20002, 'exceeded no of hours');
end if;
end;
/
show error;

谢谢你的回复,伙计。我在我的表中添加了一个“WorkWeek”属性,该属性将根据MeetDate值跟踪记录属于哪个工作周,然后我尝试在触发器中的where子句中使用以下代码,但现在我在尝试向表中插入任何数据时出错。我做错了什么?代码:其中TutID=:new.TutID和WorkWeek=选择会议日期,会议日期为:new.MeetDate;错误:第1行出现错误:ORA-01427:单行子查询返回多行。请找出答案。不知道Dual是我可以使用的默认表。再次感谢!