oracle 存储过程批量创建表和数据

来源:互联网 发布:网络精灵pipopa字幕 编辑:程序博客网 时间:2024/05/17 21:39

create or replace procedure creat_backup_table(p_n      in number,
                                               x_recode out number) is

  v_sql        varchar2(2000);
  v_a          varchar2(100);
  column_names varchar2(1000);
begin
  --表明前缀--
  v_a := 'TBL_';
  --字段--
  column_names := 'COLUMN_1 varchar2(200)';
  --每张表定义10个字段--
  for i in 2 .. 10 loop
    column_names := column_names || ',COLUMN_' || i || ' varchar2(200)';
    dbms_output.put_line('column_names: ' || column_names);
  end loop;
  --创建p_n张表--
  for i in 1 .. p_n loop
    dbms_output.put_line('all ' || i);
    v_sql := 'create table ' || v_a || i || '(' || column_names || ')';
    EXECUTE IMMEDIATE v_sql;
    commit;
 
    --每张表插入10条数据--
    for j in 1 .. 10 loop
      v_sql := 'insert into ' || v_a || i || ' values(''value' || j ||
               ''',''value' || j || ''',''value' || j || ''',''value' || j ||
               ''',''value' || j || ''',''value' || j || ''',''value' || j ||
               ''',''value' || j || ''',''value' || j || ''',''value' || j ||
               ''')';
      dbms_output.put_line('v_sql ' || v_sql);
      EXECUTE IMMEDIATE v_sql;
    end loop;
    commit;
  end loop;
  x_recode := 0;
exception
  when others then
    x_recode := SQLCODE;
    ROLLBACK;
end creat_backup_table;

  /*--执行存储过程--
  declare 
   v_count number;  
   v_output_code number;  
  begin 
    -- Call the procedure    
    v_count := 2;  
    creat_backup_table(v_count, v_output_code);  
    dbms_output.put_line(v_output_code);  
  end;*/

原创粉丝点击