Sql ORACLE:带时间段的触发器

Sql ORACLE:带时间段的触发器,sql,oracle,Sql,Oracle,我有两张桌子: -合同(经理、开始日期、结束日期、类别编号) -团队(经理、开始日期、结束日期) 我想用触发器检查一下,当所有经理出现在团队中时,他们的合同类别是否在4到9之间 这是我的触发器: CREATE TRIGGER T1 BEFORE INSERT OR UPDATE OF manager on teams FOR EACH ROW DECLARE nJP NUMBER; project_enddate DATE; BEGIN SELECT sysdate INTO

我有两张桌子:

-合同(经理、开始日期、结束日期、类别编号)

-团队(经理、开始日期、结束日期)

我想用触发器检查一下,当所有经理出现在团队中时,他们的合同类别是否在4到9之间

这是我的触发器:

CREATE TRIGGER T1
  BEFORE INSERT OR UPDATE OF manager on teams
  FOR EACH ROW
DECLARE
  nJP NUMBER;
  project_enddate DATE;
BEGIN
  SELECT sysdate INTO project_enddate FROM projects WHERE :NEW.end_date IS NULL;
  SELECT COUNT(*)
    INTO nJP
    FROM CONTRACTS c
    WHERE c.manager = :NEW.manager AND ((:NEW.start_date<c.start_date AND project_enddate>c.start_date) OR (:NEW.start_date>c.start_date)) AND c.cat_num BETWEEN 4 AND 9;
  IF nJP = 0 THEN
    RAISE_APPLICATION_ERROR(-20000,'Error: INVALID CAT_NUM');
  END IF;
END T1;
/
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at "SYSTEM.DISP_CAT_SUP", line 5
ORA-04088: error during execution of trigger 'SYSTEM.DISP_CAT_SUP'
当我在团队中插入值('12345',截止日期('05/02/15','DD-MM-YY'),截止日期('29/03/16','DD-MM-YY'))

显示我的触发器的执行错误:

CREATE TRIGGER T1
  BEFORE INSERT OR UPDATE OF manager on teams
  FOR EACH ROW
DECLARE
  nJP NUMBER;
  project_enddate DATE;
BEGIN
  SELECT sysdate INTO project_enddate FROM projects WHERE :NEW.end_date IS NULL;
  SELECT COUNT(*)
    INTO nJP
    FROM CONTRACTS c
    WHERE c.manager = :NEW.manager AND ((:NEW.start_date<c.start_date AND project_enddate>c.start_date) OR (:NEW.start_date>c.start_date)) AND c.cat_num BETWEEN 4 AND 9;
  IF nJP = 0 THEN
    RAISE_APPLICATION_ERROR(-20000,'Error: INVALID CAT_NUM');
  END IF;
END T1;
/
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at "SYSTEM.DISP_CAT_SUP", line 5
ORA-04088: error during execution of trigger 'SYSTEM.DISP_CAT_SUP'

告诉我们错误是什么会有帮助吗?将“从项目中选择sysdate到project_enddate,其中:NEW.end_date为NULL;”替换为“如果:NEW.end_date为NULL,那么project_enddate:=sysdate;end IF”。如果项目表中有>1行,则您将选择error@OldProgrammer我怀疑是ORA-01422。这是
系统。DISP\u CAT\u SUP
程序?错误似乎与您的特定触发器无关。您能否检查是否有任何其他触发器与此表关联
团队
?谢谢大家!!!我用TenG解决了我的问题评论:D