前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >查看PL/SQL编译时的错误信息

查看PL/SQL编译时的错误信息

作者头像
Leshami
发布2018-08-14 11:09:28
1.6K0
发布2018-08-14 11:09:28
举报
文章被收录于专栏:乐沙弥的世界乐沙弥的世界

    编译无效对象是DBA与数据库开发人员常见的工作之一。对于编译过程中的错误该如何去捕获,下面给出两种捕获错误的方法。

一、当前数据库版本信息及无效对象

    1、查看当前数据库版本   

代码语言:javascript
复制
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、获得数据库中的无效对象

代码语言:javascript
复制
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、编译无效对象(编译方法很多,在此不一一列出)    

代码语言:javascript
复制
/**************************************************/                          
/* Author: Robinson Cheng                         */                          
/* Blog:   http://blog.csdn.net/robinson_0612     */                          
/* MSN:    robinson_0612@hotmail.com              */                          
/* QQ:     645746311                              */                          
/**************************************************/                          
	                                                                              
--注意该包对象中包体的名字含小写字符,因此编译时使用双引号括起来                
SQL> alter package "OTC_WRHS_POSITION"."OTC_WRHS_POSITION_PCK_tmp" compile body;

二、捕获编译错误     1、使用show errors捕获错误   

代码语言:javascript
复制
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   

代码语言:javascript
复制
SQL> desc dba_errors;                                                                                                   
Name           Type           Nullable Default Comments                                                                 
-------------- -------------- -------- ------- ---------------------------------------------------------------          
OWNER          VARCHAR2(30)                                                                                             
NAME           VARCHAR2(30)                    Name of 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' and name='OTC_WRHS_POSITION_PCK_tmp' and    
  2  sequence=(select max(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:                                                         
                                                                                                                        
                                                  . ( ) , * @ % & = - + < / > at in is mod remainder not re             
                                               m                                                                        
                                                  <an exponent (**)> <> or != or ~= >= <= <> and or like LI             
                                               KE2_                                                                     
                                                  LIKE4_ LIKEC_ between || multiset member SUBMULTISET_                 
                                               The symbol "." was substituted for "ULL" to continue.                    
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011年10月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档