私はDebian GNU/Linux上でIBM DB2 9.7.2を使用しています。条件付きDROP INDEXが必要な場合にのみ必要です。サポートされていないので、私はインデックス名としてIN idx_name VARCHAR(128)を受け入れる手順を書いた。このプロシージャーで、その名前の索引がSYSCAT.INDEXESに存在するかどうかをチェックし、そうであれば実行します。条件付きDROP INDEX in db2
DROP INDEX idx_name;
しかし、明らかにDROP INDEXは文字列を受け入れません。
は、代わりに私がSYSPROC.SYSTS_DROPを()を使用してみましたが、それは私にエラーを与えた:エラーは、テキスト検索管理プロシージャーまたはコマンド 中に発生したSQL20427N。エラーメッセージは "CIE00340実行可能プログラム " cieadmsv "を開始できません。" SQLSTATE = 38H14
私はおそらくそのインデックスをドロップ行うための手順を変更し、エラーがないように、例外をキャッチすることが存在しない場合、私はまだ知りませんでした:どのように私はDROPインデックスを作ることができます変数を受け入れますか?
ご返信ありがとうございます。 SYSCAT.INDEXESと 'IDX_NAME'(一重引用符)を使用して索引が存在するかどうか、そしてIDX_NAME(引用符なし)を使用して索引をドロップするかどうかを最初に確認するだけで、手動で索引付けすることになりました。私はあなたのオプションを検討するかもしれません。手続きは一度だけ実行されるので(アップグレードスクリプトで作成、実行、削除)、私はあなたのオプション1に簡単に行くことができます。 – dimir