查找和编译失效PL/SQL对象
2007-05-14 23:33
295 查看
SET ECHO OFF
SET heading OFF
SET linesize 350
SET FEED OFF
SET TRIMS ON
SET NEWP NONE
SPOOL e: ecompile.SQL
SELECT 'alter '||OBJECT_TYPE||' '||OBJECT_NAME||' COMPILE;'||CHR(10)||'SHOW ERROR' FROM user_objects WHERE status='INVALID'
AND OBJECT_TYPE IN ('PROCEDURE','FUNCTION','PACKAGE','PACKAGE_BODY');
SPOOL OFF;
START e: ecompile.SQL; --执行这个SQL语句
--####################################################################--
--#查找失效对象#
--##############
--SELECT OBJECT_TYPE,OBJECT_NAME FROM user_objects
--WHERE status='INVALID' AND OBJECT_TYPE IN ('PROCEDURE','FUNCTION','PACKAGE','PACKAGE_BODY');
--####################################################################--
--#编译失效PL/SQL对象的函数
--#########################
--DBMS_DDL.ALTER_COMPILE(TYPE VARCHAR2,SCHEMA VARCHAR2,name VARCHAR2);
--TYPE: 'PROCEDURE','FUNCTION','PACKAGE','PACKAGE_BODY'
--eg:DBMS_DDL.ALTER_COMPILE('PROCEDURE',NULL,'intf_deal_request_p');
--####################################################################--
--#编译失效的PL/SQP对象#
--######################
SET SERVEROUTPUT ON
DECLARE
CURSOR cur_invalid_obj IS
SELECT object_type,object_name FROM user_objects WHERE status='INVALID';
rec_invalid_obj cur_invalid_obj%ROWTYPE;
vn_sqlcode NUMBER(10);
vs_sqlerrm VARCHAR(200);
BEGIN
OPEN cur_invalid_obj;
FETCH cur_invalid_obj INTO rec_invalid_obj;
WHILE cur_invalid_obj%FOUND LOOP
DBMS_OUTPUT.put_line('Recompiling '||rec_invalid_obj.object_type||':'||rec_invalid_obj.object_name||'.');
--1、使用函数
DBMS_DDL.ALTER_COMPILE(rec_invalid_obj.object_type,NULL,rec_invalid_obj.object_name);
--2、使用SQL语句
--ALTER rec_invalid_obj.object_type rec_invalid_obj.object_name COMPILE;
END LOOP;
CLOSE cur_invalid_obj;
EXCEPTION
WHEN OTHERS THEN
vn_sqlcode := SQLCODE;
vs_sqlerrm := SUBSTR(SQLERRM,1,200);
DBMS_OUTPUT.put_line('ERROR CODE='||vn_sqlcode);
DBMS_OUTPUT.put_line('ERROR MSG='||vs_sqlerrm);
IF cur_invalid_obj%ISOPEN THEN
CLOSE cur_invalid_obj;
END IF;
END;
相关文章推荐
- Oracle学习笔记:编译PL/SQL对象
- 编译数据库中的失效对象utlrp.sql
- 重新编译所有无效的PL/SQL模块(对象)
- sqlplus编译失效对象
- 用DBMS_DDL包重编译PL/SQL对象
- Scripts:重新编译失效对象的脚本(生产环境慎用)dba_recompile_invalid_objects.sql
- 用DBMS_DDL包重编译PL/SQL对象
- pl/sql编译无效对象
- jenkins调用sqlplus编译失效对象问题
- PL/SQL 包编译时hang住的处理
- 4、Oracle PL/SQL编译错误查看与处理
- Oracle OCP笔记(16)SQL与PL/SQL对象
- PL/0语言编译程序整理实现:(4)、对象类型
- SQL根据关键字查找其存在的所有对象
- 关于PL/SQL编译程序ORA-00600错误
- pl/sql编译未响应
- PL/SQL Devloper--比较对象/数据
- 使用wrap和unwrap加密解密Oracle的PL/SQL对象(包,存储过程,函数等)代码
- Oracle 中Java 对象与PL/SQL类型的映射及使用
- PLS-00905: 对象 SCOTT.QUERYEMPINFO 无效;PL/SQL: Statement ignored