【问题标题】:Qualified Oracle Function Name合格的 Oracle 函数名称
【发布时间】:2016-03-04 19:53:16
【问题描述】:

您好,我使用 SQL Server 已经有一段时间了。不过,我今天使用的是 ORacle 11g,但我有点迷茫。

我看到一个名为“Inventory_Part_Config_API.Get_Estimated_Material_Cost(contract, part_no, '*')”的对象。

如何查看此函数的定义?
Inventory_Part_Config_API 是模式吗?一袋?数据库? (我很确定 Oracle 没有像 SQL Server 那样的“数据库”。

如果 Inventory_Part_Config_API 是一个包,我如何查看所有包?数据库也是如此。我知道如何查看所有模式,但我没有看到这一点。

【问题讨论】:

  • 很可能是一个包名。查询 USER_OBJECTS 视图以查看。
  • 对我来说也像一个包...在 SQL Developer 中为您的用户检查包列表。如果不存在,请使用 View > Find DB object 进行对象搜索(或查询 all_objects 或 dba_objects)

标签: oracle oracle11g oracle10g oracle-sqldeveloper ddl


【解决方案1】:

Inventory_Part_Config_API 看起来像一个包,而 Get_Estimated_Material_Cost 是该包内的一个过程。 如果你有 PL/SQL 开发者,你可以直接使用 RMB->View Spec and Body 进入这个包。

如果您只使用 SQL plus 命令提示符,那么您可以使用以下命令查看包的来源。

Select Text from User_Source where Name Like UPPER('Inventory_Part_Config_API');

两者都需要有权限查看包体。

要查看任何对象的类型,您可以使用上一个答案中提到的 SYS.USER_OBJECTS 或 ALL_OBJECTS。

【讨论】:

    【解决方案2】:

    如 cmets 中所述,您可以使用 USER_OBJECTS 查看您的用户是所有者的所有对象,在 DBA_OBJECTS 您可以查看数据库中的所有对象,我认为您可能无法访问,如果您不这样做' t 有足够的权限(您需要此视图或 DBA 角色的显式权限)。最好的方法可能是使用ALL_OBJECTS 应该列出您的用户可以访问的所有对象。所以你可以这样做:

    SELECT object_type FROM ALL_OBJECTS WHERE object_name = 'name_of_your_object';
    

    如果您想检查架构,请使用SELECT * FROM DBA_USERS,每个架构都是 Oracle DB 中的用户。

    【讨论】:

      猜你喜欢
      • 2014-10-15
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 2018-04-12
      相关资源
      最近更新 更多