一、当前数据库版本信息及无效对象
1、查看当前数据库版本
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Solaris: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
2、获得数据库中的无效对象
set linesize 180
col object_name format a45
SELECT owner, object_name, object_type, status
FROM dba_objects
WHERE status = 'INVALID'
AND
object_type IN ('PROCEDURE', 'FUNCTION', 'TRIGGER', 'VIEW', 'PACKAGE');
OWNER OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ --------------------------------------------- ------------------- -------
OTC_WRHS_POSITION OTC_WRHS_POSITION_PCK_tmp PACKAGE INVALID
3、编译无效对象
SQL> alter package "OTC_WRHS_POSITION"."OTC_WRHS_POSITION_PCK_tmp" compile body;
二、捕获编译错误
1、使用show errors捕获错误
SQL> show errors;
No errors.
SQL> show errors package body "OTC_WRHS_POSITION"."OTC_WRHS_POSITION_PCK_tmp";
No errors.
2、如果使用show errors无法查询到错误,直接查询视图dba_errors
SQL> desc dba_errors;
Name Type Nullable Default Comments
-------------- -------------- -------- ------- ---------------------------------------------------------------
OWNER VARCHAR2(30)
NAME VARCHAR2(30) Nameof the object
TYPE VARCHAR2(12) Y Type: "TYPE", "TYPE BODY", "VIEW", "PROCEDURE", "FUNCTION",
"PACKAGE", "PACKAGE BODY", "TRIGGER",
"JAVA SOURCE"or"JAVA CLASS"
SEQUENCE NUMBER Sequence number used for ordering purposes
LINE NUMBER Line number at which this error occurs
POSITION NUMBER Position in the line at which this error occurs
TEXT VARCHAR2(4000) Text of the error
ATTRIBUTE VARCHAR2(9) Y
MESSAGE_NUMBER NUMBER Y
SQL> select owner,name,TEXT from dba_errors where owner='OTC_WRHS_POSITION'andname='OTC_WRHS_POSITION_PCK_tmp'and
2 sequence=(selectmax(sequence) from dba_errors where owner='OTC_WRHS_POSITION');
OWNER NAME TEXT
-------------------- ------------------------- ------------------------------------------------------------
OTC_WRHS_POSITION OTC_WRHS_POSITION_PCK_tmp PLS-00103: Encountered the symbol "ULL"when expecting one o
f the following:
. ( ) , * @ % & = - + < / > atinis mod remainder not re
m
<an exponent (**)> <> or != or ~= >= <= <> andorlike LI
KE2_
LIKE4_ LIKEC_ between multiset member SUBMULTISET_
The symbol "." was substituted for"ULL"tocontinue.
--转自