[关闭]
@hengbao 2018-06-04T06:52:42.000000Z 字数 556 阅读 894

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

Oracle


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

  1. CREATE OR REPLACE PROCEDURE upsert_food
  2. (
  3. IN_FOOD_CODE IN varchar2,
  4. IN_FOOD_NAME IN varchar2
  5. ) AS
  6. food_id number(16);
  7. cnt number(5);
  8. BEGIN
  9. select count(*) into cnt from myfood where food_code=IN_FOOD_CODE ;
  10. if cnt = 0 then
  11. select FOOD_SEQ.nextval into food_id from dual;
  12. INSERT INTO myfood
  13. VALUES (food_id ,IN_FOOD_CODE ,IN_FOOD_NAME );
  14. else
  15. UPDATE myfood f
  16. SET f.food_name = IN_FOOD_NAME
  17. WHERE f.food_code = IN_FOOD_CODE ;
  18. end if;
  19. END upsert_food;
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注