Oracle SQL开发人员错误ORA-04072无效触发器类型问题

Oracle SQL开发人员错误ORA-04072无效触发器类型问题,oracle,plsql,triggers,Oracle,Plsql,Triggers,我试图弄明白为什么代码总是给我错误:ORA-04072:无效的触发器类型。在Messages选项卡上显示“已编译(有错误)”,在Compiler选项卡上显示错误号和原因 代码是: create or replace TRIGGER trg_employee_salary_chk BEFORE INSERT OR UPDATE OF SALARY ON EMPLOYEES declare v_min_salary jobs.min.salary%type; v_max_salary job

我试图弄明白为什么代码总是给我错误:ORA-04072:无效的触发器类型。在Messages选项卡上显示“已编译(有错误)”,在Compiler选项卡上显示错误号和原因

代码是:

create or replace TRIGGER trg_employee_salary_chk
BEFORE INSERT OR UPDATE OF SALARY ON EMPLOYEES 

declare

v_min_salary jobs.min.salary%type;
v_max_salary jobs.max_salary%type;

BEGIN

    select min_salary, max_salary
    into v_min_salary, v_max_salary
    from jobs
    where job_id = :new.job_id;
    
    if v_min_salary is not null and v_min_salary > :new.salary then
        raise_application_error(-20111, 'Salary too low');
    end if;
    
    if v_max_salary is not null and v_max_salary < :new.salary then
        raise_application_erro(-20111, 'Salary too high');
    end if;

END;
创建或替换触发器培训员工工资
在插入或更新员工工资之前
声明
v_min_薪资工作。最小薪资%类型;
v_最高工资工作。最高工资百分比类型;
开始
选择最低工资、最高工资
分为最低工资、最高工资
来自乔布斯
其中job\u id=:new.job\u id;
如果v_min_salary不为空且v_min_salary>:new.salary,则
加薪申请错误(-20111,“工资太低”);
如果结束;
如果v_max_salary不为空且v_max_salary<:new.salary,则
加薪申请错误(-20111,“工资过高”);
如果结束;
结束;
任何帮助都将不胜感激


  • raise_应用程序错误是触发器中的错误。请尝试更正它
  • 您没有在触发器中写入“每行”

  • raise_应用程序错误是您的触发器中的错误。请尝试更正它。感谢快速响应,我能够更改您建议的更改。但现在我有更多错误。1.错误(8,14):PL/SQL:Item被忽略2.错误(8,19):PLS-00302:必须声明组件“MIN”。3.错误(13,5):PL/SQL:SQL语句被忽略4.错误(14,10):PLS-00320:此表达式类型的声明不完整或格式不正确5.错误(15,5)PL/SQL:ORQ-00904:标识符无效6.错误(18.5)PL/SQL:语句被忽略7.错误(18,8)PLS-00320L此表达式的类型声明不完整或格式不正确。而不是v_min_salary jobs.min.salary%type;编写v_min_salary jobs.min_salary%type;哦,我甚至没有看到,非常感谢您的帮助。