create procedure compile(pkg_name varchar2) is
warn_value varchar2(200);
compile_stmt varchar2(200) :=
'alter package '|| pkg_name ||' compile';
begin
warn_value := ---- 保存当前设定
dbms_warning.get_warning_setting_string;
dbms_warning.add_warning_setting_cat( -- 改变
'PERFORMANCE','disable','session');
execute immediate compile_stmt;
dbms_waring.set_warning_setting_string( ---- 恢复
warn_value,'session');
end;
----------------------------------------------------
declare
procedure print(s varchar2) is
begin
dbms_output.put_line(s);
end;
begin
print('Warning settings before: '||
dbms_warning.get_warning_setting_string);
compile('my_package');
print('Warning settings before: '||
dbms_warning.get_warning_setting_string);
end;
/
show errors package my_package