Oracleはカッコがあっても 「ORA-00907: 右カッコがありません。」
久しぶりに Oracle にテーブルを作ろうと create table文を実行したところ、「ORA-00907: 右カッコがありません。」 と怒られてしまいました・・・orz
ちなみに実行したのはこのようなSQLです。
CREATE TABLE USER( USER_ID NUMBER(13) NOT NULL, USER_NAME VARCHAR(20) NOT NULL DEFAULT '', CREATE_DATE DATE NOT NULL DEFAULT SYSDATE )
とりあえず目を皿のようにして SQL文を舐めるように見直したのですが、何度数えなおしてもカッコの数は合ってます。あるえ?
とはいえ、受け付けてくれないのでは先に勧めないので、Webで検索してみたところ、なんとこのメッセージ、右カッコが無い場合以外でも出るみたいじゃないですか!
例えば、
- DEFAULT句が NOT NULL の後にある
- 不要な箇所にカンマが入っている
- カラムの型の桁数を指定しない
- ON とか AND が正しくない使われ方をしている
- CASE文の中で WHEN が抜けている
- 副問い合わせに order by が入っている
- クォーテーションが正しく使われていない
などなど。カッコ関係ないじゃん!
僕の場合は DEFAULT句が NOT NULL の後にあったのがダメだったので、記述の順番を入れ替えて実行することが出来ましたが・・・。
今後このエラーが出たら、メッセージを 「SQLが正しくありません」 と心のなかで読み替えてから、原因を探すようにします。
参考リンク
・Oracle テーブル定義時のエラー | TECLIFE - 楽天ブログ
・ORA-00907:右カッコがありません。 - lostw0rldの日記 - プログラマの秘密のあれこれ
・すけろぐ: ORA-00907:右カッコがありません。
・「ORA-00907: 右カッコがありません」について - Oracle - 教えて!goo
Oracleのエラーメッセージってそんな不親切でしたっけ?
Oracleで開発は10年ぐらいしてないですが、SQLServerとかに比べて痒いところに手が届くイメージがあったんですが
Posted by: miroku | 04/16/2014 at 12:03
コメントありがとうございます。
う~、私の場合は場合によりけりという感じですね>Oracleのエラーメッセージ
個人的にはPLSQL関連とTNS関連だとかなり親切な印象なんですけどねぇ。
Posted by: 夢界 | 04/23/2014 at 18:06
まあオラクルなので、こんなものですよ。
顧客に使えと強制されなければ絶対に使いたくないDBですな。
sql server とか mysqlとか使えばどれだけ無意味に時間をオラクルに浪費されているのか理解できると思います。
この前トラブルシューティングのためにオラクルのサポートの質問など読みあさっておりましたら、どある質問に対してエラーメッセージを読めと言う不適切な対応をサポート窓口の方がされてました。
個人的には、お値段とサービスレベルが一致していないように見えます。
Posted by: hoge | 07/12/2022 at 22:12
コメントありがとうございます。
いやはやなんとも……。
Posted by: 夢界 | 07/17/2022 at 11:27