replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中,
replace into
SQL%NOTFOUND 是SQL中的一个隐式游标,在增删查改的时候自动打开,如果有至少有一条记录受影响,都会返回false,这就就巧妙的构思出了第一种解决方案:
当Oracle语句执行时,发生了异常exception进行处理
当往表中插入一条数据,因为表中有主键约束,如果插入的数据在表中已经存在,则会抛出异常,在异常抛出后进行修改。
dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。
先声明一个变量t_count,表dual表的值赋给t_count,如果这个值小于1,表示记录不存在,进行插入 *** 作,反之,存在就进行修改 *** 作。
先查找要插入的记录是否存在,存在则修改,不存在则插入。具体的实现如下:
先来看一下merge的语法,
先判断是否存在,存在就更新IFEXISTS(SELECT1FROMsys_empa,insertedbjoinhr_emp_titleconb.empid=c.empid)BEGINupdatecsetc.title_code=b.title_codefrominsertedbjoinhr_emp_titleconb.empid=c.empidEND不存在就插入ELSEBEGINinsertintohr_emp_title(empid,title_code)selectempid,title_codefrominsertedEND欢迎分享,转载请注明来源:内存溢出
评论列表(0条)