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
  • 相关阅读:
    剑指offer系列——41.和为S的连续正数序列
    剑指offer系列——40.数组中只出现一次的数字i-ii
    指针初始化
    剑指offer系列——39.平衡二叉树
    剑指offer系列——38.二叉树的深度
    剑指offer系列——37.数字在排序数组中出现的次数/在排序数组中查找元素的第一个和最后一个位置
    剑指offer系列——36.两个链表的第一个公共结点?
    剑指offer系列——35.数组中的逆序对**
    查看机器上GPU情况
    Linux下fork()、vfork()、clone()和exec()的区别
  • 原文地址:https://www.cnblogs.com/zydev/p/6058023.html
Copyright © 2011-2022 走看看