Compilar todos los paquetes de un usuario

Cuando importas un esquema de un usuario puede que los objetos ( vistas, funciones, paquetes, etc) no se compilen correctamente dado que dependan de objetos todavía no creados.

Por ello es útil compilar todos los objetos que estén en estado inconsistente una vez hecho el import

begin 
         FOR cur IN (SELECT OBJECT_NAME, OBJECT_TYPE, owner 
         			 FROM all_objects 
         			 WHERE object_type = :OBJECT_FOLDER_TYPE 
         			 and owner = :OBJECT_OWNER 
         			 AND status = 'INVALID' ) LOOP 
         	BEGIN
		         if cur.OBJECT_TYPE = 'PACKAGE BODY' then 
		         	EXECUTE IMMEDIATE 'alter ' || cur.OBJECT_TYPE || ' ' ||  cur.owner || '.' || cur.OBJECT_NAME || ' compile body'; 
		         else 
		         	EXECUTE IMMEDIATE 'alter ' || cur.OBJECT_TYPE || ' ' ||  cur.owner || '.' || cur.OBJECT_NAME || ' compile'; 
		         end if; 
			EXCEPTION
  				WHEN OTHERS THEN NULL; 
			END;
         end loop; 
end;
 
sql/compilar.txt · Última modificación: 2009/07/24 09:53 por juantxu
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki