多分、このエラーを目にする機会はそれなりにあって、大体の対処法はググればすぐに見つかると思う。
例えば、
- SQL実行時にはOKなのに、C#のOracleDbAccess実行時にエラーになる
- 全角スペースが原因
など。
ググった結果、今回はどれも該当せず・・・
クエリとしては一見問題なさそうなのに、そもそも
SQL>@(実行するクエリ).sqlsqlplusで実行しようとしても駄目。
使用不可能文字とか、特殊文字なんて何も使用していないただのINSERT文。
別に、ちょっとしたデータ作成だけだったので、別テーブルからコピーしちゃうとか、Excelで該当項目用のデータを作成してコピペで問題なく対応出来る内容なので、一旦、コピペで対処。
ただ、開発用DBの入れ替えを行った後には毎回行うので、コピペ前提だと作業忘れとか出てきそうなので、dumpの入れ換え後に自動実行するようにしたかった。
一旦、他の作業をすすめつつ、並行して調査。
調べても調べても自分の症例に合うような検索結果はヒットせず・・・
ということで、全部で9ヶあったうちの1ヶを全て手入力しなおしてみた。
実行できたw
どういうことだよwwwと重いつつも、他のクエリも同様に全て入力しなおしたら実行できたw
意味が分からないが、クエリとして根本的に間違ったものを書いていたわけじゃなかったので一安心・・・したけど、すごく釈然としなかった。
とりあえず、原因・・・かもしれないものはExcelで項目を並べて連結した点ぐらい。
項目名とか、入力値とか並べるのって、面倒くさいじゃないですか。
アレをExcelでやっちゃったときに、変な書式でも紛れてた可能性ぐらいしか思い当たらない。
ということで、一見正しいクエリでora-00911:文字が無効です のエラーが出た時は、クエリ作成ツールとか手打ちとかじゃない場合は、一度、クエリの打ち直しを試してみると良いですよという話。