zoukankan      html  css  js  c++  java
  • 查看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
  • 相关阅读:
    数据分析的广阔前景
    验证驱动的调用者
    重构:改善既有代码的设计 精彩书评一
    谁说菜鸟不会数据分析
    编写安全的驱动程序之输入输出检查
    数据分析师的基本素质
    重构:改善既有代码的设计 精彩书评二
    Java编程思想(第4版)(评注版)
    第四章(2)Libgdx手工项目设置
    第四章(1)Libgdx项目安装、运行和调试
  • 原文地址:https://www.cnblogs.com/zydev/p/6058023.html
Copyright © 2011-2022 走看看