【问题标题】:Why do packages and views in Oracle SQL Developer sometimes appear to have errors even when they compile?为什么 Oracle SQL Developer 中的包和视图有时即使在编译时也会出现错误?
【发布时间】:2011-03-07 11:51:39
【问题描述】:

有时当我在 Oracle SQL Developer 中浏览视图或包时,它们旁边会有一个红色图标,表示存在编译错误。这似乎随​​机发生在编译时没有任何错误或警告的对象上。

即使使用红色图标,它们也会继续工作,但这很令人困惑,让我怀疑我是否遗漏了什么。我该怎么做才能找出这些对象被标记为有问题的原因?

【问题讨论】:

    标签: oracle packages oracle-sqldeveloper


    【解决方案1】:

    我也见过;大多数情况下,子过程被修改并需要编译。

    【讨论】:

    • 我同意。我认为这可能是因为它在其基础对象被修改时变得无效,现在需要重新编译。因此旗帜。
    • 这是有道理的......也许就是这样。这发生在我的一些 100% 自包含的包上(不依赖于外部过程/函数/包),但我现在想知道对包中使用的表的修改是否也会导致这种情况。我使用 %type 和 %rowtype 变量类型,如果引用的表发生了变化,这可能是一个警告,它可能已经破坏了一些代码。如果更改任何表的 DDL,视图可能会执行相同的操作。
    • 没错,红色图标不代表错误——只是无效
    【解决方案2】:

    Oracle SQL Developer 并不是最好的软件工程。总的来说,我认为 oracle 应该只做他们可以做的好事,那就是数据库;)只是这样说是为了表明我不会太担心这些故障。

    我自己没有看到这个问题,但我可以想象当这个包使用的数据库对象(例如表)被改变时会发生这种情况。即使包仍然可以编译,oracle 也会以某种方式标记它们。在 jdbc 中,您将在第一次调用包时收到“包的现有状态已被丢弃”消息。只是一个猜测,它可能只是一个错误,我不会想太多,看看他们的 java 产品的质量;)

    【讨论】:

    • 通过 JDBC 获取错误意味着问题与 SQL Developer 一样 ;)
    • 不确定我是否理解您的意思。 SQL Developer IS 使用 JDBC。此外,使用 oracle 网络连接也会出现此类错误。
    【解决方案3】:

    Oracle 将即时重新编译无效包 - 这就是为什么无效包通常可以正常工作的原因。

    正如其他人所指出的,如果任何引用的对象被更改,包将变得无效。包可能编译干净,也可能编译不干净 - 这取决于对象的更改方式。

    【讨论】:

      猜你喜欢
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 2011-07-10
      • 2015-03-08
      • 2019-07-27
      • 1970-01-01
      • 2013-08-14
      相关资源
      最近更新 更多