ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 由drop table 想到的

由drop table 想到的

原创 Linux操作系统 作者:yellowlee 时间:2009-08-05 13:28:25 0 删除 编辑

想起了当初上班的时候,第一次被老大指派干oracle的事情了,刚进公司不久,啥都不知道,更别说oracle了。听人说oracle都用plsql,网上搜到一个plsql下载了安装,自己磕磕绊绊的装好了oracle,配好了环境。老大说让我去整整测试库,把里头不用的表都删了,大致是以一个什么固定的格式开头的表名,忘记具体的表名了。当时是在browser打开了以后一个个右键drop table的,好几十上百个表啊,就这么一个个的点的。老大看到了后直摇头,我当时还不懂啥意思呢。哈哈!

这老大不错,应该说对我影响很大。

言归正传,后来发现起始一个简单的drop table里头有很多东西:

--使用动态sql
create or replace procedure proc_drop_tables(table_name varchar2) is
  strsql varchar2(2000);
begin
  strsql := 'drop table ' || table_name;
  execute immediate strsql;
exception
  when others then
    null;
end;


begin
for cs in (select a.table_name from user_tables a where a.table_name like 'T_T_T%') loop
proc_drop_tables(cs.table_name);
end loop;
end;

--改进
create or replace procedure proc_drop_tables_2 is
  strsql varchar2(2000);
begin
  for cs in (select a.table_name
               from user_tables a
              where a.table_name like 'T_T_T%') loop
    strsql := 'drop table ' || cs.table_name;
    execute immediate strsql;
 
  end loop;
exception
  when others then
    null;
 
end;

create table test_test_test_1 as select * from dual;

--使用带参数过程,传递给带参数游标,使用动态sql
create or replace procedure proc_drop_tables_3(table_name            varchar2) is
  strsql varchar2(2000);
  cursor cs(c_table_name      varchar2) is (select a.table_name from user_tables a
         where a.table_name like c_table_name||'%');
begin
  for css in cs(table_name) loop
    strsql := 'drop table ' || css.table_name;
    execute immediate strsql;
 
  end loop;
exception
  when others then
    null;
 
end;

select * from  test_test_test_1;

--捕获异常和使用自定义exception
create or replace procedure proc_drop_tables_4(strsql            varchar2) is
 sql_exception exception;
begin
  
    execute immediate strsql ;
exception
  when others then
  if (sqlcode = -942) then
    dbms_output.put_line('execute sql exception:-942');
    RAISE_APPLICATION_ERROR(-20001,'execute sql exception:-942');
  end if; 
end;

 

还有drop table 后的恢复问题,以后再说。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16179598/viewspace-611386/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-12-27

  • 博文量
    316
  • 访问量
    657330