declare
Vs_SQL varchar2(2000);
begin
for R in (select owner, object_name,decode(object_type,'PACKAGE BODY','PACKAGE',object_type) object_type
from dba_objects
where status = 'INVALID'
and object_type IN (
'PROCEDURE',
'PACKAGE BODY',
'TYPE',
'FUNCTION',
'PACKAGE',
'VIEW',
'TRIGGER')
and owner ='USERNAME') LOOP
Vs_SQL := 'ALTER ' || R.Object_Type || ' ' ||R.owner || '.' || R.object_name ||' COMPILE ';
begin
execute immediate vs_sql;
exception
when others then
dbms_output.put_line(vs_sql);
end;
end loop;
end;
Vs_SQL varchar2(2000);
begin
for R in (select owner, object_name,decode(object_type,'PACKAGE BODY','PACKAGE',object_type) object_type
from dba_objects
where status = 'INVALID'
and object_type IN (
'PROCEDURE',
'PACKAGE BODY',
'TYPE',
'FUNCTION',
'PACKAGE',
'VIEW',
'TRIGGER')
and owner ='USERNAME') LOOP
Vs_SQL := 'ALTER ' || R.Object_Type || ' ' ||R.owner || '.' || R.object_name ||' COMPILE ';
begin
execute immediate vs_sql;
exception
when others then
dbms_output.put_line(vs_sql);
end;
end loop;
end;
本文提供了一个PL/SQL脚本,用于自动编译Oracle数据库中属于特定用户的无效对象,包括过程、包、类型、函数等。通过循环遍历并执行编译命令,可以有效解决对象无效的问题。
288

被折叠的 条评论
为什么被折叠?



