获取Oracle数据库中所有函数和过程的列表

16 浏览
0 Comments

获取Oracle数据库中所有函数和过程的列表

我正在比较三个Oracle模式。

我想要获取每个数据库中使用的所有函数和存储过程的列表。这可以通过查询实现吗?(最好包括一个标志,指示它们是否编译成功)

理想情况下,最好有一个单一的查询,其中包含一个标志,指示函数/存储过程是否在每个模式中。但即使只有前面的部分,也比手动检查每个模式要好。

0
0 Comments

在进行Oracle数据库开发过程中,有时需要获取数据库中所有函数和存储过程的列表。这个需求可能是为了查找特定的函数或存储过程,或者为了进行数据库文档化和分析。然而,Oracle没有提供直接的方法来获得这样的列表。因此,我们需要使用特定的查询语句来获取所需的信息。

问题的解决方法是使用以下SQL查询语句:

SELECT * FROM all_procedures WHERE OBJECT_TYPE IN ('FUNCTION','PROCEDURE','PACKAGE') 
 and owner = 'Schema_name' order by object_name

在这个查询语句中,我们使用了all_procedures视图来获取所有函数、存储过程和包的信息。我们使用OBJECT_TYPE条件来筛选出我们感兴趣的对象类型(函数、存储过程和包)。同时,我们还使用owner条件来指定特定的模式(也称为架构),以便只获取该模式下的对象。最后,我们按照对象名称进行排序,以便更好地组织和查看结果。

举个例子,如果我们的模式(架构)名为PMIS,我们可以使用以下查询来获取PMIS模式下所有函数、存储过程和包的列表:

SELECT * FROM all_procedures WHERE OBJECT_TYPE IN ('FUNCTION','PROCEDURE','PACKAGE') 
and owner = 'PMIS' order by object_name

通过执行这个查询,我们将获得一个包含所有函数、存储过程和包的结果集。这个结果集将包含每个对象的详细信息,如对象名称、对象类型、所有者(模式)、编译状态等。

为了更好地理解这个查询和其结果的样式,我们可以参考下面的截图:

![enter image description here](https://i.stack.imgur.com/IXLHE.png)

在这张截图中,我们可以看到查询结果以表格的形式呈现,每一行代表一个函数、存储过程或包。每一列则代表了不同的属性,如对象名称、对象类型、所有者等。

总之,通过使用上述的查询语句,我们可以轻松地获得Oracle数据库中所有函数和存储过程的列表。这个查询语句可以帮助我们更好地管理和分析数据库中的函数和存储过程,并满足我们在开发过程中的需求。

0
0 Comments

问题的出现原因:用户需要获取Oracle数据库中所有函数和过程的列表。

解决方法:可以使用以下方法获取Oracle数据库中所有函数和过程的列表:

1. 使用dba_arguments、dba_errors、dba_procedures、dba_objects、dba_source和dba_object_size表进行描述。

每个表都可以提供查看过程和函数的部分信息。

2. 在dba_objects表中,对于包的object_type,定义部分为'PACKAGE',主体部分为'PACKAGE BODY'。

3. 如果需要在同一数据库上比较模式,请尝试以下查询:

select * from dba_objects 
   where schema_name = 'ASCHEMA' 
     and object_type in ( 'PROCEDURE', 'PACKAGE', 'FUNCTION', 'PACKAGE BODY' )
minus
select * from dba_objects 
where schema_name = 'BSCHEMA' 
  and object_type in ( 'PROCEDURE', 'PACKAGE', 'FUNCTION', 'PACKAGE BODY' )

并且交换ASCHEMA和BSCHEMA的顺序。

4. 如果还需要查看触发器并比较模式之间的其他内容,可以参考Ask Tom上关于比较模式的文章。

0
0 Comments

问题的出现原因是需要获取一个Oracle数据库中所有函数和存储过程的列表。解决方法是使用以下的SQL查询语句:SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE IN ('FUNCTION','PROCEDURE','PACKAGE')。该查询语句会返回所有类型为函数、存储过程和包的对象。通过查看返回结果的STATUS列,可以判断对象是否有效。如果对象无效,可以尝试重新编译以解决问题。另外,如果只想列出特定用户的对象,可以在查询语句中添加一个条件AND OWNER =[用户名称]。如果需要比较包中的函数和存储过程,以上查询语句就不足够了。

0