我在SQL Plus中创建了一个数据库,我想实现一些触发器,但是由于这些错误它们似乎没有工作,我搜索谷歌寻找无效的解决方案。你能帮忙吗?
这是我为触发器输入的内容。
create trigger test
after insert
or update of salary
on staff
for each row
declare
salarygrade number;
begin
select grade
into salarygrade
from salgrade
where :new.salary between losalary and hisalary;
exception
when no_data_found then
raise_application_error(-20001,
'salary not included within in salary grade');
when others then
raise_applciation_error(-20000,
'error has occured');
end;
/
触发器已创建,但编译错误,错误包括: 1. PLS-00103:当期待以下时遇到符号“then”。 2. PLS-00103:遇到以下情况时遇到符号“,”。
答案 0 :(得分:1)
我能够创建触发器,在引发应用程序错误时出现了一些错误,我在没有它的情况下创建了它,您可以使用raise_application_error的正确语法修改更改。
SQL> create or replace trigger test
after insert
or update of salary
on staff
for each row
declare
salarygrade number;
begin
select grade
into salarygrade
from salgrade
where :new.salary between losal and hisal;
end;
/
Trigger created.
答案 1 :(得分:0)
and hisalary <= :new.salary
答案 2 :(得分:0)
您在选择语句末尾缺少分号。
虽然我们正在使用它,您确定您的select语句不会返回多行吗?你的意思是and hisalary >= :new.salary
? (如果是这样,整个where子句可以重写where :new.salary between losalary and hisalary
)
答案 3 :(得分:0)
尝试使用CREATE OR REPLACE触发器用新的代码覆盖旧代码。