仅当存在时,在Oracle SQL中删除一个表。

8 浏览
0 Comments

仅当存在时,在Oracle SQL中删除一个表。

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

0
0 Comments

在传统的PL/SQL中,可以在代码块中指定一个异常部分,如果要删除的表不存在,则可以捕获该异常。

参考链接:Oracle errors handling

在Oracle SQL中,如果要删除一个表,可以使用DROP TABLE语句。但是,如果要删除的表不存在,将会抛出一个错误。为了避免这种情况,可以在PL/SQL代码块中使用异常处理来捕获并处理这个错误。

下面是一个示例代码,在代码中使用异常处理来删除表:

BEGIN
  EXECUTE IMMEDIATE 'DROP TABLE table_name';
EXCEPTION
  WHEN OTHERS THEN
    IF SQLCODE != -942 THEN
      RAISE;
    END IF;
END;
/

在上面的代码中,首先使用EXECUTE IMMEDIATE语句来执行DROP TABLE语句。如果要删除的表不存在,将会抛出一个ORA-00942错误(表或视图不存在)。在异常部分,使用IF语句来判断错误代码是否为-942,如果不是-942,则重新抛出该错误。如果错误代码为-942,则异常处理部分结束。

通过这种方式,即使要删除的表不存在,也不会导致整个代码块终止执行,而是会被捕获并处理掉。这样可以确保代码的稳定性和可靠性。

总结起来,要在Oracle SQL中删除一个表,如果表不存在,可以使用PL/SQL代码块中的异常处理来捕获并处理这个错误。通过判断错误代码,可以控制是否重新抛出错误或继续执行其他操作。这种方式可以保证代码的健壮性和可靠性。

0
0 Comments

在Oracle SQL中,没有像drop table if exists my_table这样的语法,这在MySQL(可能还有其他RDBMSs)中是合法的语法。

在一个.SQL脚本中,当你运行DDL来DROP和/或CREATE各种对象时,Oracle的标准做法是删除对象,并在对象不存在的情况下忽略错误。如果你希望,你可以编写代码来检查对象是否存在(参见DBA_OBJECTS视图),只有在存在的情况下才删除。

s.executeUpdate中,我猜你是在使用Java进行操作?如果是我,我会直接执行drop操作,忽略任何不存在的错误。

0
0 Comments

如果你有适当的权限,可以按照以下示例进行操作:

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过程中,则需要相应地进行调整。

0