批量重新编译无效的视图、存储过程、包、触发器和函数对象。
begin
dbms_output.put_line('开始:'||to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'));
for curObj in (select * from USER_OBJECTS where STATUS <> 'VALID' order by Object_Type) loop
dbms_output.put_line(curObj.Object_Type||':'||curObj.Object_Name);
begin
if curObj.Object_Type = 'VIEW' then
execute immediate 'alter view ' || curObj.Object_Name || ' compile';
elsif curObj.Object_Type = 'PROCEDURE' then
execute immediate 'alter procedure '|| curObj.Object_Name || ' compile';
elsif curObj.Object_Type = 'PACKAGE BODY' then
execute immediate 'alter package ' || curObj.Object_Name || ' compile';
elsif curObj.Object_Type = 'TRIGGER' then
execute immediate 'alter trigger ' || curObj.Object_Name || ' compile';
elsif curObj.Object_Type = 'FUNCTION' then
execute immediate 'alter function ' || curObj.Object_Name || ' compile';
end if;
exception
when others then
dbms_output.put_line(sqlcode||':'||sqlerrm);
end;
end loop;
dbms_output.put_line('结束:'||to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'));
end;