欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ORACLE更新数据时如果有就更新没有就插入

程序员文章站 2022-10-30 23:41:26
SQL写法: begin update table_name set salary = 10000 where emp_id = 5; if sql%notfound then insert into table_name (id,name,salary)values("","","") ; end ......

sql写法:

begin

  update table_name set salary = 10000 where emp_id = 5;

  if sql%notfound then

   insert into table_name (id,name,salary)values("","","") ;

  end if;

end;

sql%notfound 是一个布尔值。与最近的sql语句(update,insert,delete,select)发生交互,当最近的一条sql语句没有涉及任何行的时候,则返回true。否则返回false。这样的语句在实际应用中,是非常有用的。例如要update一行数据时,如果没有找到,就可以作相应操作。

当update emp_id为5的这行记录,如果update影响条数为0,则插入一条数据。

 

sql%found 的用法与sql%notfound用法相反,也是与最近的sql语句发生交互,如果影响行数大于0条,则为true

否则为false。

 

sql%rowcount在dml语句执行前是null,执行后,对于select into语句,执行成功则值为1,不成功则值为0。