创建如下 Proc,系统运行前调用一次就行了。
PROCEDURE "PRO_COMPILE"
AS
v_object_name user_objects.object_name%TYPE;
v_object_type user_objects.object_type%TYPE;
cursor_name INTEGER;
rows_processed INTEGER;
CURSOR cur_pro IS
SELECT object_name,object_type
FROM user_objects
WHERE object_type IN ('PROCEDURE','VIEW','TRIGGER','FUNCTIONS','PACKAGES')
AND object_name NOT IN ('PRO_ COMPILE')
AND status='INVALID';
BEGIN
OPEN cur_pro;
LOOP
FETCH cur_pro INTO v_object_name,v_object_type;
EXIT WHEN cur_pro%NOTFOUND;
begin
execute immediate 'ALTER ' || v_object_type ||' '||v_object_name||' COMPILE';
exception
when others then
null;
end ;
END LOOP;
CLOSE cur_pro;
END pro_compile;