我必须使用SQL语句删除表,如果表不存在,它将崩溃。是否可以使用IF
语句删除表
s.executeUpdate("DROP TABLE employee");
答案 0 :(得分:10)
Oracle不支持像drop table if exists my_table
这样的构造,这在MySQL(以及可能的其他RDBMS)中显然是合法的语法。
在.SQL
脚本中,您运行DDL
到DROP
和/或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中,您可以在块中指定一个异常部分,如果该表不在那里,则捕获该异常。
答案 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上发布的规则。