如何知道给定的标识符是存储过程还是 Table 或视图

How to know wheter the given identifier is Stored procedure or Table or View

有没有办法知道给定的标识符是 table 还是视图或过程等...在 oracle 中?

例子:我有一个标识符"PICKUPON",我想知道这个标识符的对象类型。通过在 Toad 的 Schema 浏览器中浏览,我花了几分钟才知道这是一个过程。是否有任何问题可以完成这项工作。

我没有可使用的 Oracle 数据库,但您可以使用其中的 OBJECT_TYPE 列吗?

https://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_2005.htm#i1583352

您可以检查 all_objects 并在 object_type 列中查看

select *
  from all_objects 
 where object_name like '%PICKUPON%'

在 Oracle 中,您可以使用系统视图 ALL_OBJECTS、DBA_OBJECTS、USER_OBJECTS 来查询数据库架构。

您可以像 table 一样查询它们,如

SELECT OBJECT_TYPE FROM ALL_OBJECTS where OBJECT_NAME = '...'

请注意,树视图略有不同,结果取决于用户数据库用户的权限:

  • USER_OBJECTS 显示当前用户对象。
  • ALL_OBJECTS显示当前所有对象和您有权访问的对象。
  • DBA_OBJECTS 显示所有用户的所有对象。