CREATE OR REPLACE PROCEDURE p1 AS CURSOR C1 IS SELECT 'ALTER ' ||DECODE(OBJECT_TYPE,'PACKAGE BODY','PACKAGE',OBJECT_TYPE) ||' ' ||OWNER ||'.' ||OBJECT_NAME ||DECODE(OBJECT_TYPE,'PACKAGE BODY',' COMPILE BODY',' COMPILE') ||' ;' invobjt FROM DBA_OBJECTS WHERE STATUS='INVALID' AND owner IN('XXXX') ORDER BY OBJECT_TYPE, OWNER , OBJECT_NAME; K1 NUMBER:=1; v_Str VARCHAR2(2000); BEGIN EXECUTE IMMEDIATE 'TRUNCATE TABLE DEBUG_TABE'; LOG_PROC('S1'); WHILE K1<10 LOOP LOG_PROC('S2'); K1:=K1+1; LOG_PROC('S3'); DBMS_APPLICATION_INFO.SET_MODULE( 'Compile All Job in Execution','K loop:'||K1); FOR I IN C1 LOOP LOG_PROC('S4'); v_Str:=I.invobjt; LOG_PROC('S5 v_Str:'||v_Str); EXECUTE IMMEDIATE (''''||v_Str||''''); LOG_PROC('S6'); END LOOP; END LOOP; EXCEPTION WHEN OTHERS THEN LOG_PROC('Err occured in compile all script :'||sqlerrm||'--Err Date:'||sysdate); END; Records from DEBUG_TABE: S1 S2 S3 S4 S5 v_Str:ALTER FUNCTION FINLEN.S_TEST_MUL_OUT COMPILE ; Err occured in compile all script :ORA-00900: invalid SQL statement--Err Date:10-MAY-13