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 ;