【问题标题】:oracle forms 6i missing package bodyoracle forms 6i 缺少包体
【发布时间】:2018-01-30 13:41:39
【问题描述】:

在我们获得的一个软件中,我们发现有一些包体的过程被定义为空。例如:

procedure execute_report(parameters) is
begin
    null;
end;

尽管如此,这些程序正在通过表单使用,并且它们似乎可以正常工作。如示例所示,调用过程“execute_report”实际上会运行报告。 该过程没有在任何库中定义,甚至没有使用查询:

SELECT * FROM ALL_OBJECTS WHERE OBJECT_NAME LIKE '%EXEC%'

不会从数据库中返回任何可能被调用的内容...

有没有办法隐藏我缺少的表单、库或数据库中的代码?

【问题讨论】:

  • 您检查的是表单使用的同一个数据库吗?您从哪个用户运行 ALL_OBJECTS 查询?是SYSDBA账号还是普通用户?表单是否连接到同一个用户?
  • @MT0 我正在使用与表单使用的用户相同的用户运行查询。不,它不是 SYSDBA。我猜想如果表单能够看到它,我应该也可以使用同一个用户。我无法通过 SYSDBA 访问,我应该为此联系 DBA。
  • 一个名为“execute_report”的过程在一个包内的存在是无关紧要的 - 如果你的代码直接调用execute_report(即没有指定包名),它会成功,那么您应该期望找到 (a) 在数据库上按该名称创建的 过程,或 (b) 它的同义词。
  • 您是否检查过表单自己的过程中是否存在名为EXECUTE_REPORT的过程?您可以在 Object Navigator 的一个节点中进行检查。
  • @JeffreyKemp 我无法在问题中提到的数据库中找到该过程...您知道其他查找方法吗?

标签: sql oracle oracleforms


【解决方案1】:

您可能有一个包含过程 execute_report 的 pll(表单库) 然后将调用它而不是数据库版本。

【讨论】:

  • 是的,但如前所述,它只是说空;在程序的定义中。
猜你喜欢
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
  • 2017-10-31
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 2013-01-13
相关资源
最近更新 更多