如果表存在于sql语句中,则从oracle数据库中删除表

时间:2014-04-05 00:55:44

标签: database oracle drop-table

我必须使用SQL语句删除表,如果表不存在,它将崩溃。是否可以使用IF语句删除表 s.executeUpdate("DROP TABLE employee");

5 个答案:

答案 0 :(得分:10)

Oracle不支持像drop table if exists my_table这样的构造,这在MySQL(以及可能的其他RDBMS)中显然是合法的语法。

.SQL脚本中,您运行DDLDROP和/或CREATE各种对象,Oracle标准是删除对象,并且在对象不存在的情况下忽略错误。如果您愿意,可以编写代码来检查对象是否存在(请参阅DBA_OBJECTS视图),只有在它存在时才会删除。

来自s.executeUpdate,我认为你是用Java做的吗?如果是我,我只是执行删除并忽略任何不存在的错误。

希望有所帮助。

答案 1 :(得分:2)

假设您拥有正确的权限,您可以执行以下操作

declare var_count int;
select count(*) INTO var_count
from all_tables where OWNER = [schema] and table_name = "EMPLOYEE";
if var_count > 0 then
begin
drop table employee;
end  
如果你在前端代码中执行此操作而不是pl / sql过程,

会相应地进行调整。

答案 2 :(得分:0)

传统上,在pl / sql中,您可以在块中指定一个异常部分,如果该表不在那里,则捕获该异常。

请参阅Oracle errors handling

答案 3 :(得分:0)

这将解决您的问题,当表格不存在时,不会抛出任何错误。

BEGIN   DROP TABLE员工; 例外   然后呢。等等     空值; END;

答案 4 :(得分:-3)

我会使用以下代码:

s.executeUpdate("DROP TABLE IF EXISTS employee")

但是根据你的情况,你也可以使用它:

IF OBJECT_ID('dbo.employee', 'U') IS NOT NULL
DROP TABLE dbo.employee

答案来自:here,这似乎也可能是同一篇文章的副本? 我非常强烈,强烈建议阅读SQL文档,并在发布之前尝试做更多的研究,但感觉我看到你是新的,请务必阅读在StackOverFlow上发布的规则。