重新编译Oracle失效的view、procedure、trigger、functions、packages

创建如下 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;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值