SYS_CONNECT_BY_PATH…でハマル

何度も言いますがわたしはSQLが大嫌いです ;)

試験部隊のデータベースで突然SQLがエラーになると言うことで調査しました…なんでオレが :?: と思いつつ人も居なかったので。

まぁ、エラーになるSQL文は特定できているので簡単なことです…たぶん。とか思いつつ。

開発部隊のデータベースに接続して、エラーになるSQL文を実行…当然というか正常に結果を返してきます。

気を取り直して、試験部隊のデータベースだとやはりエラーになります。

ほぉ、ORA-30004ですか…なになに :?: SYS_CONNECT_BY_PATH関数がホゲホゲって書いてあるなぁ~なんだ、その関数と思って検索…ほぉ、データの中をセパレータで区切ってホゲホゲ :roll:

へぇ~SQL(ORACLE)の関数って色々あるのね~なんて感心しながら、SQL文を見る。ありゃ、SYS_CONNECT_BY_PATHなんて使ってないよぉ :shock:

あ、なんか変な関数定義しているなぁ~この中かなぁ面倒だなぁ~と思いつつ探す…ないよ :shock:

引いているテーブルの中に何個かビューがあるよぉ~ビューの定義を見る…げ、あるじゃんSYS_CONNECT_BY_PATH。ビューの中でエラーかよ。しかも、セパレータの文字によるデータ依存かよ :shock:

と言うことで、データの中身を検索…あったセパレータに依存するデータ。とりあえず除去して、SQL文が正常に実行されることを確認。あとは、ナゼそんなデータが入ったかを調査するだけ…まぁ、それはわたしの知ったことじゃないけど。とりあえず復旧だけはしたので :arrow:

なんか、ビューの中にこんなデータ依存の関数を忍ばせるなよぉ :!: という怒りより。

よく、こんな面倒で複雑なSQLを書けるよなぁ。と全然別なところで感心してしまった。

しかし、あらためて嫌いになりましたSQL

TrackBack URL :

No comments yet. Be the first.

Leave a reply