web-dev-qa-db-ja.com

同等のDB2ドロップテーブルが存在する場合

DB2テーブルが存在する場合は削除するか、エラーを削除して無視する必要があります。

12
Roman Iuvshin

次のように、テーブルが存在するかどうかの最初のクエリ

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

そしてそれが何か問題を返すならあなたの

drop table myschema.mytable

他の可能性は、dropコマンドを発行して、テーブルが存在しない場合に発生する例外をキャッチすることです。そのコードをtry {...} catch(Exception e){// Ignore}ブロック内に配置するだけです。

2
user918176

これを試してください:

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

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
Esperento57

以下は、テーブルが存在するかどうかを確認するために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
0
Îsh