Home > Database > Mysql Tutorial > body text

Oracle有条件地插入数据

WBOY
Release: 2016-06-07 15:38:38
Original
2125 people have browsed it

方法一: declare iExists int; begin select count(*) into iExists from表 where 条件; if iExists=0 then insert into 表 ( ... ) values ( ... ); end if; end; 声明iExists变量,通过条件在表中找出有重复的数量,如果没有,就把数据插入表中 方法二:

方法一:

declare
iExists int;
begin
  select count(*) into iExists from 表 where 条件;
  if iExists=0 then
    insert into 表 ( ... ) values ( ... );
    end if;
  end;

声明iExists变量,通过条件在表中找出有重复的数量,如果没有,就把数据插入表中

 

方法二:

merge into 目标表
using 源表 | (select 语句)
on ( 条件 )
when matched then update set 列=值
    delete where ( 列=值 )
when not matched then insert ( 列... ) values ( 值... );

利用merge 方法,匹配的更新或删除,不匹配的插入数据

 

oracle不支持insert into ... not exists 方法

---------------------------------------------------------------------

MSSQLServer 方法:

if not exists(select * from 表 where 条件... ) insert into 表 ( 列 ... ) values ( 值 ... );

或者

declare @iExists int
select @iExists=COUNT(*) from 表 where 条件... ;
if @iExists=0
begin
insert into 表 ( 列 ...) values ( 值 ... );
end;

----------------------------------------------------------------------------

注:插入的先后不同,会影响结果 (Oracle 与MSSQL不一样)

1、
merge into student
using (select * from dual)
on (student.stno=1 and (student.stname='aaaa' or student.stname is null))
when not matched then
  insert (stno,stname,birth )
  values (1,'aaaa',sysdate);

2、
merge into student
using (select * from dual)
on (student.stno=1 and (student.stname='' or student.stname is null))
when not matched then
  insert (stno,stname,birth )
  values (1,'',sysdate);

 

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template