如果存在等效的DB2 Drop表

Rom*_*hin 12 sql db2 sql-drop

我需要删除DB2表(如果存在),或者删除并忽略错误.

del*_*nce 6

试试这个:

IF EXISTS (SELECT name FROM sysibm.systables WHERE name = 'tab_name') THEN
DROP TABLE tab_name;END IF;
Run Code Online (Sandbox Code Playgroud)

  • DB2不支持这种程序流控制 (4认同)

Îsh*_*Îsh 5

下面的内容在 DB2 中对我有用,它查询视图SYSCAT.TABLES以检查表是否存在。如果是,则准备并执行该DROP TABLE语句。

BEGIN    
   IF EXISTS (SELECT TABNAME FROM SYSCAT.TABLES WHERE TABSCHEMA = 'SCHEMA_NAME' AND TABNAME = 'TABLE_NAME') THEN 
      PREPARE stmt FROM 'DROP TABLE SCHEMA_NAME.TABLE_NAME';
      EXECUTE stmt;
   END IF;                                                        
END
Run Code Online (Sandbox Code Playgroud)


use*_*176 2

首先查询表是否存在,例如

select tabname from syscat.tables where tabschema='myschema' and tabname='mytable'
Run Code Online (Sandbox Code Playgroud)

如果它返回一些问题你的

drop table myschema.mytable
Run Code Online (Sandbox Code Playgroud)

另一种可能性是仅发出 drop 命令并捕获表不存在时将引发的异常。只需将该代码放入该方法的 try {...} catch (Exception e) { // Ignore } 块中即可。