插入表几十万条数据的两种方法
SQL> create table t_test
2 (ID NUMBER,
3 DOMAIN VARCHAR2(50),
4 IP LONG);
Table created
SQL>
SQL> insert into t_test
2 select rownum,'www.a_'||rownum||'.com',3232238943+10*rownum from dual
3 connect by rownum<=10000000;
10000000 rows inserted
SQL> commit;
create table tb(
ID NUMBER,
DOMAIN VARCHAR2(50),
IP LONG
) NOLOGGING ;
CREATE OR REPLACE PROCEDURE p_insert
IS
num NUMBER; --批量提交参数
BEGIN
FOR i IN 1..10000000 LOOP
insert /*+append*/ into tb VALUES(i,'www.a_'||i||'.com',3232238953+(i-1)*10); --执行插入
num:=num+1;
IF Mod(num,100)=0 THEN --一百笔提交一次,分批量提交,及时释放redo log buffer
COMMIT;
END IF;
END LOOP;
END;
alter table tb LOGGING
oracle用户数据库中,procedures就是存储过程,这是创建脚本最简单的例子
create or replace procedure MyDemo(dateLine in varchar2) IS
--类型定义
cursor cc is select * from tuser t;
--定义一个游标变量
ccrec cc%rowtype;
begin
--for循环
for ccrec in cc loop
dbms_output.put_line(ccrec.name||'-'||ccrec.createdatatime);
dbms_output.put_line(dateLine);
end loop;
end MyDemo;
接着进行调试:数字1表示右键选择 查看,打开一个程序窗口,数字2 就是双击打断点的地方,注意数字3不是断点
数字1表示右键选择 test,打开一个测试窗口(加上上图中一共两个窗口),如果是含有输入参数的,在第数字2位置输入参数,然后点击数字3
数字1表示完全执行,数字2表示单步执行,如果前面在程序窗口打了断点的话,最好只执行数字2操作,可以看到每次执行信息,如果断点位置打的不对,会有提示的。
鼠标放在要打印的变量上面可以显示当前变量的值
最后一步,在测试窗口的 DBMS输出标签页面时,可以看到打印的输出值是多少。