コンパイルエラーのプロシージャをリコンパイルする

すんごく久々に業務でOracleしてるよ!うれしくてわくわくするね。

という訳で現在ステータスが無効になっているプロシージャをりコンパイルするSQL

SET HEAD OFF
SET TRIMSPOOL ON
SET FEED OFF
SPOOL Recompile.sql

select 'ALTER ' || DECODE(OBJECT_TYPE, 'PACKAGE BODY', 'PACKAGE', OBJECT_TYPE)
       || ' ' || object_name || ' COMPILE ' || DECODE(OBJECT_TYPE, 'PACKAGE BODY', 'BODY', ' ')
       || ';'
  from user_objects where status = 'INVALID';

SPOOL OFF
@Recompile.sql