2008年3月20日
SYS_CONNECT_BY_PATH…でハマル
何度も言いますがわたしはSQLが大嫌いです
試験部隊のデータベースで突然SQLがエラーになると言うことで調査しました…なんでオレが
と思いつつ人も居なかったので。
まぁ、エラーになるSQL文は特定できているので簡単なことです…たぶん。とか思いつつ。
開発部隊のデータベースに接続して、エラーになるSQL文を実行…当然というか正常に結果を返してきます。
気を取り直して、試験部隊のデータベースだとやはりエラーになります。
ほぉ、ORA-30004ですか…なになに
SYS_CONNECT_BY_PATH関数がホゲホゲって書いてあるなぁ~なんだ、その関数と思って検索…ほぉ、データの中をセパレータで区切ってホゲホゲ
へぇ~SQL(ORACLE)の関数って色々あるのね~なんて感心しながら、SQL文を見る。ありゃ、SYS_CONNECT_BY_PATHなんて使ってないよぉ
あ、なんか変な関数定義しているなぁ~この中かなぁ面倒だなぁ~と思いつつ探す…ないよ
引いているテーブルの中に何個かビューがあるよぉ~ビューの定義を見る…げ、あるじゃんSYS_CONNECT_BY_PATH。ビューの中でエラーかよ。しかも、セパレータの文字によるデータ依存かよ
と言うことで、データの中身を検索…あったセパレータに依存するデータ。とりあえず除去して、SQL文が正常に実行されることを確認。あとは、ナゼそんなデータが入ったかを調査するだけ…まぁ、それはわたしの知ったことじゃないけど。とりあえず復旧だけはしたので
なんか、ビューの中にこんなデータ依存の関数を忍ばせるなよぉ
という怒りより。
よく、こんな面倒で複雑なSQLを書けるよなぁ。と全然別なところで感心してしまった。
TrackBack URL :
