コンテンツ
ORA-00955としてよく知られているOracle PL / SQLエラー955は、表、ビュー、索引、シノニム、グループなどの既存のオブジェクトで使用されている名前でデータベースにオブジェクトを作成すると発生します。オブジェクトに別の名前を付けるとエラーが解決します。
ORA-00955はすでに別のオブジェクトに割り当てられている名前で発生する例外エラーです (ジャスティン・サリバン/ゲッティイメージズ/ゲッティイメージズ)
エラーメッセージ
ユーザーがOracle PL / SQLコマンドラインに特定の名前でオブジェクトを作成し、「ORA-00955 nameはすでに既存のオブジェクトによって使用されています」というメッセージを受け取ります。
原因
このエラー・メッセージは、ユーザーが更新をインストールするとき、Oracle PL / SQLでテーブルまたは索引を消去または作成するスクリプトを実行するとき、またはシステム定義オブジェクト用に予約されている単語を使用するときに発生します。一般に、ユーザーはデータベース内の別のオブジェクトにすでに割り当てられている名前でオブジェクトを作成しようとします。
解決策
ユーザーは、別の名前またはオブジェクトを選択するか、目的の名前を使用できるように既存のオブジェクトを変更して名前を変更することをお勧めします。他のユーザーが使用中の名前を持っているかどうかを確認するには、DBA_OBJECTSまたはUSER_OBJECTSを参照してください。
次の文を使用して、既存の名前のニックネームとパブリックシノニムも確認します。
SELECT * FROM ALL_OBJECTS WHERE ObjectName = "NAME";
ALL_OBJECTS表には、特定のログインIDに使用可能なすべてのユーザーがアクセス可能なオブジェクトのリストが含まれています。名前を再利用するには、同じ名前の不要なオブジェクトをすべて削除します。
例外処理を使用してエラーを無視する
ユーザーは、オブジェクト作成エラーを無視する例外ハンドラを作成することで、ORA-00955を回避できます。エラーを処理し、そのステータスに "NULL"を割り当てるPL / SQLコードを作成します。
DECLARE MyNamedTableExists EXCEPTION; exception_initプラグマ(MyNamedTableExists、-955); sql_stmt varchar2(50):= 'テーブル一時ストアを作成します(col1番号)'; BEGIN / 即時sql_stmtを実行してください。 / CREATE TABLE MyNamedTableExists AS SELECT * FROM MySupposedTableから; /+テーブル名がすでに存在する場合は、ORA-955エラーを無視します。 MyNamedTableExistsがNULLの場合は/ EXCEPTION。 END;