DB2テーブルが存在する場合は削除するか、エラーを削除して無視する必要があります。
次のように、テーブルが存在するかどうかの最初のクエリ
select tabname from syscat.tables where tabschema='myschema' and tabname='mytable'
そしてそれが何か問題を返すならあなたの
drop table myschema.mytable
他の可能性は、dropコマンドを発行して、テーブルが存在しない場合に発生する例外をキャッチすることです。そのコードをtry {...} catch(Exception 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.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 ;
以下は、テーブルが存在するかどうかを確認するためにSYSCAT.TABLES
ビューを照会するDB2で機能しました。はいの場合、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