• 查看package编译时的错误信息及重新编译


         开发时,一般都是使用PL/SQL工具进行开发,查看编译错误及重新编译都很简单,但是一般的生产环境是不允许连接外界工具的,只能在命令行中进行重新编译及查看,今天我就遇到了这个问题,现在总结如下:

    1、获取数据库中的无效对象:

     1  set linesize 180;
     2  col owner format a10
     3  col object_name format a45
     4  col object_type format a20
     5  col status format a20
     6 SELECT owner, object_name, object_type, status
     7   FROM dba_objects
     8  WHERE status = 'INVALID';
     9 
    10 OWNER       OBJECT_NAME                     OBJECT_TYPE          STATUS
    11 ---------- --------------------------------------------- -------------------- ------------------
    12 YLPROD      DMPAC_ENDOR                     PACKAGE BODY         INVALID

    2、编译无效对象

    1 SQL> alter package ylprod.dmpac_endor compile package;
    2 
    3 警告: 更改的包带有编译错误。

    这是重新编译包体,package是重新编译包体和包规范。

    SQL> alter package ylprod.dmpac_endor compile package;

    3.捕获编译错误

    1 SQL> show errors;
    2 PACKAGE YLPROD.DMPAC_ENDOR 出现错误:
    3 
    4 LINE/COL ERROR
    5 -------- -----------------------------------------------------------------
    6 21/3     PL/SQL: Declaration ignored
    7 23/54    PLS-00302: 必须声明 'ENDORNO' 组件
    8 27/3     PL/SQL: Declaration ignored
    9 29/59    PLS-00302: 必须声明 'ENDORNO' 组件

    或者

    SQL> show errors package  ylprod.DMPAC_ENDOR
    PACKAGE YLPROD.DMPAC_ENDOR 出现错误:
    
    LINE/COL ERROR
    -------- -----------------------------------------------------------------
    21/3     PL/SQL: Declaration ignored
    23/54    PLS-00302: 必须声明 'ENDORNO' 组件
    27/3     PL/SQL: Declaration ignored
    29/59    PLS-00302: 必须声明 'ENDORNO' 组件

    如果使用show errors无法查询到错误,直接查询视图dba_errors   

    SQL> select owner,name,TEXT from dba_errors where owner='YLPROD' and name='DMPAC_ENDOR';
    
    OWNER       NAME
    ---------- ------------------------------------------------------------------------------------------
    TEXT
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    YLPROD       DMPAC_ENDOR
    PLS-00302: 必须声明 'ENDORNO' 组件
    
    YLPROD       DMPAC_ENDOR
    PL/SQL: Declaration ignored
  • 相关阅读:
    2014年寒假学习规划
    二十进制数的加法--【英雄会】
    使用IBM SVC构建vSphere存储间集群
    游戏服务器学习笔记 2———— 准备工作
    php判断正常访问和外部访问
    游戏服务器学习笔记 3———— firefly 的代码结构,逻辑
    数学基础知识 ——(1)高等数学
    动态内存与智能指针
    Numpy(4)—— 保存和导入文件
    Numpy(3)—— 线性代数相关函数
  • 原文地址:https://www.cnblogs.com/zydev/p/6058023.html
Copyright © 2020-2023  润新知