急求oracle 存储过程 代码!!
发布网友
发布时间:2022-05-06 01:17
我来回答
共2个回答
热心网友
时间:2022-05-06 02:46
create table temp_order(
o_id varchar2(20),
o_name varchar2(20),
o_date varchar2(20),
v_day varchar2(20)
); --订单表
insert into temp_order values('ddffff','ee','20081203');
insert into temp_order values('aaa','ww','20090125');
insert into temp_order values('dfsa','ww','20090213');
insert into temp_order values('uuuu','hhh','20090216');
insert into temp_order values('ccc','bb','20090205');
insert into temp_order values('iii','xx','20090305');
commit; --插入一些数据(本来有数据就不需要了)
create table mid_temp_order(
o_id varchar2(20) not null,
o_name varchar2(20),
o_date varchar2(20),
insert_date varchar2(20)
); --中间表
create or replace procere p_temp_order(v_date varchar2)
is
v_sql1 long;
v_sql2 long;
v_date_1 date;
begin
v_sql1 := 'truncate table mid_temp_order';
execute immediate v_sql1;
v_date_1 := to_date(v_date, 'yyyymmdd');
commit;
insert /*+append*/
into mid_temp_order nologging
select a.o_id, a.o_name, a.o_date, null
from temp_order a
where v_date_1 - to_date(a.o_date, 'yyyymmdd') > 30;
commit; --将订单表中的数据筛选出来插入中间表
v_sql2 := 'truncate table temp_order';
execute immediate v_sql2;
insert into temp_order
select m.o_id, m.o_name, m.o_date, v_date from
mid_temp_order m;
commit; --将中间表中筛选出来的数据插入原表中
execute immediate 'truncate table mid_temp_order';
--删除中间表数据
end;
热心网友
时间:2022-05-06 04:04
两张表结构相同吗?按你的设计应该这样写
PROCEDURE CHANGE AS
CURSOR GETOLDDATA IS SELECT * FROM DINGDANBIAO WHERE 数据超过30天;
DATA_LIST GETOLDDATA%ROWTYPE;
BEGIN:
OPEN GETOLDDATA;
LOOP
FETCH GETOLDDATA INTO DATA_LIST;
EXIT WHEN jcxx_czrk_cursor%NOTFOUND;
INSERT INTO LINGYIBIAO ........
VALUES(DATA_LIST.A,DATA_LIST.B,......)
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END;
以上就是2表移数据的过程 当然也可以用bulk into的做法 速度会快点 下面的操作参考上面你应该会了撒