如何在oracle中重编译所有无效的存储过程:
在sql_plus中:
spool execcompproc.sql select 'alter procedure '
||object_name||' compile;' from all_objects where
status = 'invalid' and object_type = 'procedure'; spool off
@execcompproc.sql;
|
整理成一个存储过程:
create or replace procedure zl_compile_invalid_procedure
asstrsql varchar2(200);beginfor x in (select object_name
from all_objects where status = 'invalid'
and object_type = 'procedure') loopstrsql := 'alter procedure '
|| x.object_name || ' compile';begin execute immediate strsql;
exception--when others then null; when others then
dbms_output.put_line(sqlerrm); end;end loop;end;
|
最后执行:
exec zl_compile_invalid_procedure;
|
如果要看到无法重编译的过程的出错信息,需要执行前设置set serverout on。