假如我们正在经营一家餐馆,现在我们重新构建了一个点菜系统。需要把原来的点菜系统的食品代码和名称更新到新的系统里来,很不幸,两个系统需要并行一段时间,且用的数据库还不同。不过你可以通过请求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;