自己刚毕业半年,水平低下,最近几天由于工作需要,要求写个删除垃圾数据的存储过程,可我之前哪儿接触过这玩意儿啊。
于是硬着头皮找资料,网上的资料狂多,可都不切实际,并没有给自己带来多大的帮助,后来看看公司前人写的存储过程,
终于完成了。考虑到要删除的表名都以zy_开头,于是考虑到游标
打开PL/SQL的new->program window->procedure 新建一个存储过程PMOS.DeleteXCWL
以下是代码(无输入输出)
-- head area
create or replace procedure PMOS.DeleteXCWL
-- declare area ,all variable declared here
is
-- save tableName
tablename varchar2 ( 100 );
-- save delete sql statement
delString varchar2 ( 100 );
-- define a cursor
cursor mycursor is
select a. object_name
from user_objects a
where a. object_name like ' ZY_XCWL% ' and a.object_type = ' TABLE ' ;
-- delete from table where name of table like 'ZY_XCWL'
begin
open mycursor;
loop
fetch mycursor into tablename;
exit when mycursor % notfound;
delString: = ' delete from ' || tablename;
execute immediate delString ;
commit ;
end loop;
close mycursor;
end ;
这样,每次循环将表名存入tablename,然后拼接成delete from 的语句。
保存之后在PL/SQL的command window里面或者oracle的 sql plus里直接执行
SQL>exec PMOS.DeleteXCWL;
到此over。
我是一个新手,希望此文对和我一样的新手有帮助,同时希望各位高手加以指点,小弟感激不尽!