sql 解釋
SET PAGESIZE 0
SET FEEDBACK OFF
SET VERIFY OFF
SPOOL TEMP.SQL
SELECT 'ALTER '|| OBJECT_TYPE || ' ' || OWNER || '.' || OBJECT_NAME || ' COMPILE;'
FROM ALL_OBJECTS
WHERE STATUS = 'INVALID'
AND OWNER = DECODE(UPPER('&&NAME'), 'ALL',OWNER, UPPER('&&NAME'));
SPOOL OFF
@TEMP.SQL
SET PAGESIZE 14
SET FEEDBACK ON
SET VERIFY ON
问题点数:0、回复次数:2Top
1 楼hippie1024(努力必有痕迹)回复于 2004-12-01 14:19:40 得分 0
DBA_OBJECTS视图存储了关于PACKGE,PACKGE BODY,PROCEDURE, FUNCTION, TRIGGER, JAVA CLASS, JAVA RESOURCE, 和 JAVA DATA以及其他的信息。DBA_OBJECTS中的STATUS指出了对象在上次编译的时候是否出现了错误。它将被设置成‘VALID’或者‘INVALID’。
一个包可能会变得无效,因为它的引用有可能被再编译。你可以利用SQL DDL语句在没有源代码的情况下重新编译一个包:
alter function FOO compile;
alter java source FOO compile;
alter java class FOO compile;
alter procedure FOO compile;
alter package FOO compile;
alter package FOO compile body;
alter trigger FOO compile body;
你的这个脚本就是查询一个用户模式下所有无效的OBJECT,生成重新编译这些OBJECT的脚本(TEMP.SQL
),然后在执行此脚本重新编译无效OBJECT
Top
2 楼Lokioo((火神啊!))回复于 2004-12-01 14:52:31 得分 0
被楼上的抢先了Top




