ORA-01722: Invalid number(数値が無効)
Oracle意味
数値コンテキストが必要な箇所で、数値に変換できない文字列が使われた。暗黙的または明示的な変換が失敗した。
原因
数値列と文字列の比較 (例: WHERE num_col = 'ABC')、数値フィールドへの英字を含む値の挿入、TO_NUMBER に不適切な書式、または小数点/桁区切り文字の不一致 (カンマとピリオド)。
対処方法
変換に失敗した式を特定する。通常は WHERE 条件か INSERT の値。文字列/数値の比較では型の互換性を確保し、必要に応じて明示的な変換を使う: TO_NUMBER(my_column)、文字列側には TO_CHAR。アプリケーション層で数値列への非数値入力を防ぐ。NLS_NUMERIC_CHARACTERS の設定に注意する。
同じデータベースの他の項目
- ORA-00018Maximum number of sessions exceeded(セッションの最大数を超過)
- ORA-28000The account is locked(アカウントがロックされている)
- ORA-01578Oracle data block corrupted (file #, block #)(Oracle データブロックの破損)
- ORA-02049Timeout: distributed transaction waiting for lock(分散トランザクションのロック待機タイムアウト)
- enq: TX - row lock contention待機: 別トランザクションが保持する行レベルロックでセッションがブロックされている
- log file sync待機: コミット時に LGWR が redo をディスクにフラッシュするのをセッションが待っている
- db file sequential read待機: 単一ブロックの物理読み取り。通常はインデックスまたはテーブルの参照