有时,当我在 Oracle SQL Developer 中浏览视图或包时,它们旁边会有一个红色图标,表示存在编译错误。这似乎随机发生在编译时没有任何错误或警告的对象上。
即使使用红色图标,它们也会继续工作,但这很令人困惑,让我想知道我是否遗漏了什么。我可以做些什么来找出为什么这些对象被标记为有问题?
有时,当我在 Oracle SQL Developer 中浏览视图或包时,它们旁边会有一个红色图标,表示存在编译错误。这似乎随机发生在编译时没有任何错误或警告的对象上。
即使使用红色图标,它们也会继续工作,但这很令人困惑,让我想知道我是否遗漏了什么。我可以做些什么来找出为什么这些对象被标记为有问题?
我也看到了;大多数情况下,子过程被修改并需要编译。
Oracle SQL Developer 并不是最好的软件工程。总的来说,我认为 oracle 应该只做他们可以做的好事,那就是数据库;)只是这样说是为了表明我不会太担心这些故障。
我自己没有看到这个问题,但我可以想象当这个包使用的数据库对象(eq 一个表)被改变时会发生这种情况。即使包仍然可以编译,oracle 也会以某种方式标记它们。在 jdbc 中,您将在第一次调用包时收到“包的现有状态已被丢弃”消息。只是一个猜测,它可能只是一个错误,我不会想太多,看看他们的 java 产品的质量;)
Oracle 将即时重新编译无效包——这就是为什么无效包通常可以正常工作的原因。
正如其他人所指出的,如果任何引用的对象被更改,包将变得无效。包可能编译干净,也可能编译不干净——这取决于对象的更改方式。