如何在Oracle中检查对象是否存在

14 浏览
0 Comments

如何在Oracle中检查对象是否存在

这个问题在这里已有答案

Oracle:如果表存在

获取Oracle中所有表的列表?

我们可以使用以下查询在T-SQL中检查对象是否存在。

IF OBJECT_ID('TBL_COMP_ASSESSMENT') IS NOT NULL
DROP TABLE TBL_COMP_ASSESSMENT

在Oracle中有没有实现这个的方法?

admin 更改状态以发布 2023年5月24日
0
0 Comments

你可以使用ALL_OBJECTS表。像这样的代码应该可以:

SELECT * FROM ALL_OBJECTS WHERE OBJECT_NAME = ''

你可以根据你的要求添加更多的条件:

AND OWNER='' AND OBJECT_TYPE=''

完整的详情在这里:http://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_2005.htm

0
0 Comments

在运行时动态表是不好的做法。T-SQL和PL/SQL非常不同。PL/SQL在执行前编译并驻留在数据库中。你在T-SQL中做的事情在PL/SQL中可能不好。你可以通过表而不是在运行时放弃它。
无论如何,如果你真的想这样做,那么你需要利用来做到这一点。
例如:

SQL>  DECLARE
  2      cnt NUMBER;
  3  BEGIN
  4      SELECT Count(*)
  5      INTO   cnt
  6      FROM   user_tables
  7      WHERE  table_name = 'TBL_COMP_ASSESSMENT';
  8
  9      IF cnt = 1 THEN
 10        BEGIN
 11            EXECUTE IMMEDIATE 'DROP TABLE TBL_COMP_ASSESSMENT';
 12        EXCEPTION
 13            WHEN OTHERS THEN
 14              IF SQLCODE != -942 THEN
 15                RAISE;
 16              END IF;
 17        END;
 18      END IF;
 19  END;
 20
 21  /
PL/SQL procedure successfully completed.
SQL>

0