Oracle 存储过程

  --1 存储过程迁移数据 
CREATE OR REPLACE PROCEDURE P_TB_TEST IS
--功能:插入任务到任务日志表
V_TASK_START_DATE DATE;
V_TASK_END_DATE DATE;
V_SQL_CODE NUMBER;
V_SQL_MSG VARCHAR2(4000) := '';
--SQL错误信息
V_TEST tablespace_test.TB_TEST%ROWTYPE;
V_COUNT NUMBER;
cursor CUR_TEST is
select * FROM tablespace_test.TB_TEST a;
begin
--该存储过程执行开始时间和结束时间
SELECT SYSDATE INTO v_task_start_date FROM dual;
SELECT SYSDATE INTO v_task_end_date FROM dual;
v_sql_msg := 'step 1: 抽取数据到目的表TB_TEST';
open CUR_TEST;
V_COUNT := 0;
loop
fetch CUR_TEST
into V_TEST;
exit when CUR_TEST %NOTFOUND;
INSERT INTO TB_TEST (Field1) values (V_TEST.Filed1);
if (V_COUNT = 2000) then
commit;
V_COUNT := 0;
else
V_COUNT := V_COUNT + 1;
end if;
end loop;
close CUR_TEST;
commit;
SELECT SYSDATE INTO v_task_end_date FROM dual;
INSERT INTO LOAD_HIS_LOG
(SYS, JOBNAME, START_DATE, END_DATE, RUN_DATE, SQL_CODE, SQL_STATE)
VALUES
('tablespace_test',
'P_TB_TEST_LOG',
v_task_start_date,
v_task_end_date,
to_char((v_task_end_date - v_task_start_date) * 86400),
v_sql_code,
v_sql_msg);
COMMIT;
end P_TB_TEST;
--2 存储过程插入10000条数据 Insert a million records with the DEMO procedure
create or replace procedure demo_p(total in integer) AS
uuid number := 1; uuser varchar2(50) := 'user'; upassword varchar2(50) := 'password';
begin
loop insert into demo(uuid, uuser, upassword) values(uuid, uuser || uuid, upassword || uuid); uuid := uuid + 1; exit when uuid >= total;
end loop;
end;
---Clear table then call procedure to insert a million records
truncate table demo; call demo_p(1000); select * from demo;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值