Sign-up....

触发器的奇怪问题

我写的一个触发器在不同的oracle版本处理不一致,请问是不是关于触发器oracle有设置啊?

版本一 oracle 10g 触发器正常

版本二 oracle 9 报错,错误如下

java.sql.SQLException: ORA-01403: 未找到数据

ORA-06512: 在"HBDRCI_SHENPI.TRG_F1613_USER", line 11

ORA-04088: 触发器 'HBDRCI_SHENPI.TRG_F1613_USER' 执行过程中出错

在版本一下,如果没有找到数据则不插入数据,不报错

版本二下如果找不到数据就会报如上错误,当然如果查询到数据就没有任何问题

触发器如下

create or replace trigger TRG_F1613_USER

after update on spxx_t_f1613

REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW

declare

ename varchar2(100);

enperson varchar2(100);

enadd varchar2(200);

enphone varchar2(30);

begin

--取企业名称

select ku_name into ename from wk_t_user where ku_id =

(select SPXX_N_USERID from spxx_t_examples where spxx_c_exmid = (select SPXX_C_EXMID from SPXX_T_COURSE where SPXX_C_ID = :new.SLJDID));

--取其它信息

select sp_c_prnname, sp_c_enpadd,sp_c_manphone into enperson,enadd,enphone

from sp_t_userenp where sp_n_userid = (select SPXX_N_USERID from spxx_t_examples where spxx_c_exmid = (select SPXX_C_EXMID from SPXX_T_COURSE where SPXX_C_ID = :new.SLJDID));

--插入新值

insert into SPXX_T_F1613_USER (SLJDID,QYMC,XXDZ,FRDBXM,LXDHHM) values(:new.SLJDID,ename,enadd,enperson,enphone);

end TRG_F1613_USER;

[1163 byte] By [msdn] at [2007-8-15 9:50:10]
# 1 Re: 触发器的奇怪问题

ename varchar2(100)

enperson varchar2(100)

enadd varchar2(200)

enphone varchar2(30)

marvinhong at 2006-5-8 19:11:47 >
# 2 Re: 触发器的奇怪问题
应该不是这个问题
henry186 at 2006-05-09 10:30:00 >
# 3 Re: 触发器的奇怪问题
至少在9i下,如果select into 语句没有返回值,那么是会报告错误的。最好的办法是使用exception来处理。
dobetterthatnthink at 2006-05-09 13:51:00 >

Oracle

All Classified