DB2 Drop table if exists equivalent

后端 未结 5 2154
既然无缘
既然无缘 2020-12-18 23:07

I need to drop a DB2 table if it exists, or drop and ignore errors.

相关标签:
5条回答
  • 2020-12-18 23:38

    search on systable : if you are on as400 (power i, system i) the system table name is QSYS2.SYSTABLES else try sysibm.systables or syscat.tables (This depends on the operating system)

    BEGIN    
    IF EXISTS (SELECT NAME FROM QSYS2.SYSTABLES WHERE TABLE_SCHEMA = 'YOURLIBINUPPER' AND TABLE_NAME = 'YOUTABLENAMEINUPPER') THEN           
      DROP TABLE YOURLIBINUPPER.YOUTABLENAMEINUPPER;                             
    END IF;                                                        
    END  ; 
    
    0 讨论(0)
  • 2020-12-18 23:49

    First query if the table exists, like

    select tabname from syscat.tables where tabschema='myschema' and tabname='mytable'
    

    and if it returns something issue your

    drop table myschema.mytable
    

    Other possibility is to just issue the drop command and catch the Exception that will be raised if the table does not exist. Just put that code inside try {...} catch (Exception e) { // Ignore } block for that approach.

    0 讨论(0)
  • 2020-12-18 23:52

    Try this one:

    IF EXISTS (SELECT name FROM sysibm.systables WHERE name = 'tab_name') THEN
    DROP TABLE tab_name;END IF;
    
    0 讨论(0)
  • 2020-12-18 23:52

    The below worked for me in DB2 which queries the SYSCAT.TABLES view to check if the table exists. If yes, it prepares and executes the DROP TABLE statement.

    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
    
    0 讨论(0)
  • 2020-12-18 23:56

    This is simpler and works for me:

    DROP TABLE SCHEMA.TEST IF EXISTS;
    
    0 讨论(0)
提交回复
热议问题