我有两个函数可以在插入到表之前检查重复值,但是我不知道哪种方法更有效?

第一种方法:

select count(*)

into ln_rec_cnt

from ieexco_tbl t

where t.ieexco_dept_code = p_dept

and NVL(t.IEEXCO_SEQ, '|') = NVL(p_indx, '|')

if ln_rec_cnt > 0 then

raise_application_error(-20001, 'Save coordinator record repeatedly');

end if;

第二种方法:

insert into ieexco_tbl t

(IEEXCO_DEPT_CODE,

IEEXCO_SEQ,

IEEXCO_NAME,

IEEXCO_PHONE,

IEEXCO_EMAIL,

IEEXCO_CREATE_DATE,

IEEXCO_OPR_PIDM)

select

p_dept,

p_indx(i),

p_name(i),

p_tel(i),

p_email(i),

sysdate,

p_opr_pidm

from dual

where not exists(SELECT 1

FROM ieexco_tbl

WHERE IEEXCO_DEPT_CODE = p_dept

and NVL(IEEXCO_SEQ,'|')= NVL(p_indx(i),'|'));

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐