注册

触发器编译报错(有歧义的ID),所有触发器都是报这个错误

初心 2024/06/07 709 2 已解决

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:centos7
【CPU】:x86
【问题描述】*:触发器编译报错,错误如下:
image.png

触发器内容如下:
create or replace trigger "RSMDATA"."TR_BU_IRR_INDICATOR_INFO"
before UPDATE
on "RSMDATA"."IRR_INDICATOR_INFO"
referencing OLD ROW AS "OLD" NEW ROW AS "NEW"
for each row
declare
v_trigger_user varchar2(100);
v_trigger_date date;
cursor c_switch(cp_switch rsm_tr_switch.switch_for%type) is
select status from rsm_tr_switch
where trigger_name = 'TR_BU_IRR_INDICATOR_INFO'
and switch_for = cp_switch;
v_status rsm_tr_switch.status%type;
v_sqlcode varchar2(6);
v_sqlerrm varchar2(200);
v_error_comment varchar2(300);
v_seq varchar2(20);
v_seq_no varchar2(20);
v_flag varchar2(10);
v_message varchar2(400);
v_seq2 varchar2(20);
v_flag2 varchar2(10);
v_message2 varchar2(400);
begin
v_error_comment:='before get_user';
v_trigger_user := pub_sys_package.get_user();
v_trigger_date := sysdate;

--需求来源:SLIS数据同步
--功能描述:seq自动生成流水号;
--对pk_serial的写入放在公共部分,不允许屏蔽,不得擅自改动
v_error_comment:='before pk_serial';
if :new.IRR_INDICATOR_ID is null then
rsmcde.rsm_seq_package.get_seq('IRR_INDICATOR_INFO', 'IRR_INDICATOR_ID', 'RSMDATA',v_seq, v_flag, v_message );
if v_flag <> '1' then
raise_application_error(-20510,'IRR_INDICATOR_INFO.IRR_INDICATOR_ID对应的seq值出现异常:'||v_message);
end if;
:new.IRR_INDICATOR_ID := v_seq;
end if;

rsmcde.rsm_seq_package.get_seq('IRR_INDICATOR_INFO', 'PK_SERIAL', 'RSMDATA',v_seq, v_flag, v_message );
if v_flag <> '1' then
raise_application_error(-20510,'IRR_INDICATOR_INFO.PK_SERIAL对应的seq值出现异常:'||v_message);
end if;
:new.pk_serial := v_seq;

v_error_comment:='before RSM_SYNCH';
open c_switch('RSM_SYNCH'); --获取子功能控制信息
fetch c_switch into v_status;
if c_switch%FOUND and v_status = '1' then
:new.created_user := v_trigger_user;
:new.created_date := v_trigger_date;
:new.updated_user := v_trigger_user;
:new.updated_date := v_trigger_date;
end if;
close c_switch;

--出错处理
exception
when others then
v_sqlcode :=sqlcode;
v_sqlerrm :=substr(sqlerrm,1,200);
insert into rsm_tr_error_log
(error_no , --系统错误代码
error_message , --系统错误信息
trigger_name , --出错的trigger
trigger_user , --出错的用户
trigger_date , --出错的时间
error_comment --出错详细信息
)

values
(v_sqlcode,
v_sqlerrm,
'TR_BU_IRR_INDICATOR_INFO',
v_trigger_user,
v_trigger_date,
v_error_comment
);

end;

回答 0
暂无回答
扫一扫
联系客服