Oracle11g:创建类似于mysql的upsert存储过程

假如我们正在经营一家餐馆,现在我们重新构建了一个点菜系统。需要把原来的点菜系统的食品代码和名称更新到新的系统里来,很不幸,两个系统需要并行一段时间,且用的数据库还不同。不过你可以通过请求server端接口,获取这些值。以下,就是一个Oracle版本的更新/插入的例子:

CREATE OR REPLACE PROCEDURE upsert_food
(
IN_FOOD_CODE IN varchar2,
IN_FOOD_NAME IN varchar2
) AS
food_id number(16);
cnt number(5);
BEGIN
  select count(*) into cnt from myfood where food_code=IN_FOOD_CODE ;
  if cnt = 0 then 
   select FOOD_SEQ.nextval into food_id from dual;
    INSERT INTO myfood 
        VALUES (food_id ,IN_FOOD_CODE ,IN_FOOD_NAME );
  else
      UPDATE myfood  f
    SET f.food_name = IN_FOOD_NAME 
    WHERE f.food_code = IN_FOOD_CODE ;
  end if;
END upsert_food;

猜你喜欢

转载自my.oschina.net/hengbao666/blog/1795205
今日推荐