如何解决我的PL / SQL代码中存在编译错误
我的PL / SQL代码中出现编译错误,如果client_master发生任何更新或删除,则audit_client表将被更新
create or replace trigger t1
after update or delete on client_master
for each row
DECLARE
v1 varchar2(10);
v2 varchar2(80);
v3 number(11);
oper varchar2(15);
BEGIN
v1:= :old.CLIENT_NO
v2:= :old.NAME
v3:= :old.BALANCE
if updating then
oper:='update'
insert into audit_client values(v1,v2,v3,oper,v4,v5);
end if;
if deleting then
oper:='delete'
insert into audit_client values(v1,v5);
end if;
end;
/
解决方法
您为什么要声明所有v
变量?有所简化:
create or replace trigger t1
after update or delete on client_master
for each row
declare
l_oper varchar2(15);
begin
if updating then
l_oper := 'update';
elsif deleting then
l_oper := 'delete';
end if;
insert into audit_client
(client_no,name,balance,oper,col4,col5)
values
(:old.client_no,:old.name,:old.balance,l_oper,null,null);
end;
/
我插入v4
而不是v5
和NULL
,因为您从未说过应该在其中放置什么。
此外,作为一种好的做法,您应该始终指定要使用的列列表。这就是为什么我编列这些列名的原因,因为我不知道它们的真名,但是您知道,所以应该使用它们。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。