DB2 Drop table, если существует эквивалент - PullRequest
12 голосов
/ 25 ноября 2011

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

Ответы [ 3 ]

6 голосов
/ 03 апреля 2017

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

IF EXISTS (SELECT name FROM sysibm.systables WHERE name = 'tab_name') THEN
DROP TABLE tab_name;END IF;
2 голосов
/ 24 апреля 2017

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

BEGIN    
IF EXISTS (SELECT NAME FROM QSYS2.SYSTABLES WHERE TABLE_SCHEMA = 'YOURLIBINUPPER' AND TABLE_NAME = 'YOUTABLENAMEINUPPER') THEN           
  DROP TABLE YOURLIBINUPPER.YOUTABLENAMEINUPPER;                             
END IF;                                                        
END  ; 
2 голосов
/ 26 ноября 2011

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

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

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

drop table myschema.mytable

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

...