pl/sql declare loop if
时间:2021-07-01 10:21:17
帮助过:14人阅读
1.判断表是否存在,如果存在则drop表
-- 2.创建表
-- 3.插入1W条数据
-- 4.每1K条commit一次
declare
v_table varchar2(
222):
=‘STUDENT‘;
--表名
v_table_exists
number:
=0;
--如果大于0,则表存在
v_sql_create
varchar2(
2222);
--create table sql
v_number
number:
=500000;
--插入的数据
v_id
number:
=0;
--id字段
v_age
number:
=100000;
--age字段
v_i
number:
=0;
--记录插入的条数
v_start_time
varchar2(
22);
--执行命令开始时间
v_end_time
varchar2(
22);
--执行命令结束时间
v_exec_time
varchar(
22);
begin
--判断表是否存在,如果存在最删除
select to_char(sysdate,
‘yyyy-mm-dd hh24:mi:ss‘)
into v_start_time
from dual;
select count(
1)
into v_table_exists
from tab
where tname
=upper(
‘student‘);
if v_table_exists
> 0
then
execute immediate
‘drop table ‘||v_table
||‘ purge‘;
dbms_output.put_line(‘drop table ‘||v_table
||‘ sucessfuly‘);
else
dbms_output.put_line(‘table ‘||v_table
|| ‘ is not exists‘);
end if;
--create table student
v_sql_create:
=‘create table ‘||v_table
||‘ (id number,age number)‘;
execute immediate v_sql_create;
commit;
-- insert data to student
loop
exit when v_number
<=0;
v_number:=v_number
-1;
insert into student
values(v_id,v_age);
v_id:=v_id
+1;
v_age:=v_age
+1;
v_i:=v_i
+1;
--commit / 10000 line data
if mod(v_i,
10000)
=0
then
select to_char(sysdate,
‘yyyy-mm-dd hh24:mi:ss‘)
into v_exec_time
from dual;
dbms_output.put_line(v_i||‘ ‘||v_exec_time);
commit;
end if;
end loop;
select to_char(sysdate,
‘yyyy-mm-dd hh24:mi:ss‘)
into v_end_time
from dual;
dbms_output.put_line(‘execute sucess ‘||v_start_time
||‘ -> ‘||v_end_time);
end;
/
pl/sql declare loop if
标签:表名 weight har where 执行 dia 开始时间 media exe