日期:2014-05-17  浏览次数:20902 次

求一存储过程,从一个表根据一字段,导入到另一个表中,该字段有就更新,没有就添加,在算出更新几条,添加几条
本帖最后由 kll329582600 于 2013-09-18 22:34:50 编辑
-- Create table
CREATE TABLE order_info
(
  order_code          VARCHAR2(10),
  item_name           VARCHAR2(10),
  item_price            NUMBER,
  operate_name      VARCHAR2(10),
  operate_date        DATE
);
CREATE TABLE order_info_all AS 
SELECT order_code, item_name, item_price FROM order_info WHERE 1=0;

BEGIN
      INSERT INTO order_info_all 
      SELECT '001', '铅笔', 10 FROM dual UNION ALL 
      SELECT '002', '钢笔', 20 FROM dual UNION ALL 
      SELECT '003', '毛笔', 30 FROM dual;
      
      INSERT INTO order_info 
      SELECT '003', '毛刷笔', 20, '张三', SYSDATE FROM dual;
END;
/*
根据字段 order_code 判断
结果如下:order_info 表:
001 铅笔 10 导入人 导入时间
002 钢笔 20 导入人 导入时间
003 毛笔 30 导入人 导入时间
新增 2 条,更新 1 条。
*/

------解决方案--------------------
看看merger 函数
------解决方案--------------------
没有环境,就手写一个给你吧,如果有问题,远程给你调试吧,看符合你的需求不
create or replace procedure testInsert(c_return out varchar2)
as
v_order_code varchar2(50);
v_item_name varchar2(50);
v_item_price varchar2(50);
v_flag number;
v_insert number;
v_update number;
cursor c_order_info is select order_code, item_name, item_price FROM order_info;
begin
v_insert:=0;
v_update:=0;
open c_order_info;