Db2 Drop table, если существует эквивалент

Мне нужно удалить таблицу DB2, если она существует, или удалить и игнорировать ошибки.

3 ответов


первый запрос, если таблица существует, например,

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

и если он возвращает что-то выдать ваш

drop table myschema.mytable

другая возможность - просто выполнить команду drop и поймать исключение, которое будет вызвано, если таблица не существует. Просто поместите этот код внутри блока try {...} catch (исключение e) { // Ignore } блок для этого подхода.


попробуй это:

IF EXISTS (SELECT name FROM sysibm.systables WHERE name = 'tab_name') THEN
DROP TABLE tab_name;END IF;

поиск по systable: если вы находитесь на as400 (power i, system i), имя системной таблицы-QSYS2.SYSTABLES еще попробуйте sysibm.systables или syscat.таблицы (это зависит от операционной системы)

BEGIN    
IF EXISTS (SELECT NAME FROM QSYS2.SYSTABLES WHERE TABLE_SCHEMA = 'YOURLIBINUPPER' AND TABLE_NAME = 'YOUTABLENAMEINUPPER') THEN           
  DROP TABLE YOURLIBINUPPER.YOUTABLENAMEINUPPER;                             
END IF;                                                        
END  ;