ORA-00936 式がありません! エラー原因を見つけることの大変さ
システムやプログラムと切っても切り離せないのがデータベース。入社して以降様々な企業様の保守サポートをさせていただいていますが、Oracleのデータベースを使っているところが非常に多いなあと感じています。
そしてそれに伴って、幾度となく飽きるほどに見た『ORA-xxxxx』の文字。今回はそんなOracleのエラーコードから話を始めてみようと思います。
明言してくれないエラーコードたち
まだ入社して1年未満。データベースにもOracleにも精通していない私にとって、エラーコードは非常に悩ましい存在でした。なぜなら、どこで何を間違えているのか明示してくれているわけではないから。
ブログのタイトルにもした「ORA-00936 式がありません」というエラーコードと出会ったのは、サブクエリやJOINの練習問題を解いているときのことでした。何行にも及ぶSQLを書いて実行した結果、このようなメッセージが表示されたら「これだけ長いのに式がないことある?」と思わざるを得ません。
初歩的なミスが命取り
エラーが出たら、まずはエラーコードで検索をかけてみます。すると、大半が文法や構文間違いの場合に出るエラーだということが分かりました。どの部分で間違えているかは、自分の目と頭が頼りです。
SQL文をじっくり眺めてみると、where文以降の部分をスッポリ書き忘れていました。「式がありません」と言われると、たいそうな失敗が潜んでいるように感じてしまいますが、結果はなんとも初歩的なミスでした。文法ミスとも言えないくらい。でもこういう微妙なミスが、意外と気づくのに時間がかかってしまったりして、思い悩む原因になることも少なくはありません。
エラーの原因を見つけるのは案外難しい
エラーが出るのは、Oracleのデータベースに限った話ではありません。コムフォートでは保守サービスをしており、お客様からお問い合わせいただくことが多々ございます。その場合、「何かしらのエラーが出ている」「エラーではないけど思った形で動いていない」といった有事の際であることが大半です。
まずは状況を確認し、何が原因なのか解明する必要があります。その際にエラーコードから直接答えを導き出せたら良いのですが、いまいち頼りにならないことも・・。前述した通り、「この部分でこれが間違っているよ!」と明示してくれる訳ではないので、誰でも簡単に原因究明が出来る、というわけではないんですよね。
経験と知識が力になる
正直なところ、私もまだまだ未熟者なので、サクッと答えにたどり着けることは多くありません。しかし、SQL文のミスに関しては、かなりはやく気づけるようになりました。
その大きなポイントは「経験」と「知識」です。私がSQLで文法ミスをするときは、「from」や「where」が抜けていることが多いんです。全くもって自信満々に言うことではありませんが、よく間違えるポイントを自分の経験として積み上げた結果、ここで間違えているのでは?という仮説を立てるのが上手になった、ということだと思います。また、よく見かけるエラーコードに関しては、なんとなく覚えてきました。そうした経験や知識が力になっていくのだと感じています。
『ORA-00936』のように、とっても些細なミスでも、気づくのに時間がかかってしまうことがあります。私も最初は何のエラーか分からず戸惑いました。でも今はスッキリ解決出来ることが増えてきました!なぜなら、「何が原因で、どう対応すべきか」が分かってきたからです。
保守サービス=プロに任せる、ということのメリットも、同じようなところにあると思います。私もそんな信頼して貰えるプロになれるよう、経験と知識を積み重ねていきたいと思います。