MySQL ストアドプロシージャ/ファンクションを使ってみよう!


いやー・・・本当に情報が少なくて苦労した。というか現在進行形で苦労してます。表題の通り、MySQLのストアドプロシージャ/ストアドファンクションの件なのですが、oracle触っているときも、db2触っているときも、「管理が複雑になるから」ともっともらしいことをいって避けていた道なんですけど、なんとなくわかったところで、「あ、これ結構つかえるじゃん?」と思ってきた。まあ、たしかにプロシージャ側がデータベースサーバサイドで動くわけなのでアプリケーションとの比重を考える必要があるかと思うけど、phpとでもjavaでもアプリケーション視点で考えてみれば、小難しいこと考えなくてもよくなるので、パラメータ渡したら期待した結果が戻ればそれで良いわけでSQLでの過程なんてどーでも良いわけだ、またある意味アプリケーションのプログラムと、ストアドプロシージャは分離されているので、細かい計算ロジックをストアドプロシージャ側で実装すれば、仕様変更があっても、もしかしたらストアドプロシージャだけを変更するだけですむかもしれないですしね。



続きを読む “MySQL ストアドプロシージャ/ファンクションを使ってみよう!”

MySQL 二点間の距離を正確に出す!~ distance_sphere()


いきなりですが、「MySQLで2点間の緯度・経度から距離算出」が!!前から気になっていたことがありました、 PostgreSQLのPostGISにはあって、MySQLのジオメトリ関数にはない関数、distance_spheroid というもので、回転楕円体で計算で、点間距離を算出する関数なのですが、これが、MySQLには実装されていないため、PostGISを使うか、 MySQLを使うかずっと悩んでいたのですが、MySQLのストアドファンクションを利用して、このdistance_spheroidが実現できないか な?と考えていたところ、ほぼ誤差ゼロで二点間の距離が算出できるようなものができましたので、ここに掲載したいと思います。




MySQL ストアドファンクションを利用してJSON形式のファイルを生成する


logomysql

こんばんわ、まあ、たんなる文字列遊びなんですが、MySQLのストアドファンクションを利用して、JSON形式のデータにコンバートする関数を作ってみました。

つかってみて意外と便利だったので以下に掲載します。

続きを読む “MySQL ストアドファンクションを利用してJSON形式のファイルを生成する”

Lost connection to MySQL server during queryの対策について


うー。。どんどんストアドプロシージャがおかしくなってくる。。。。

こんどはこんなエラーが・・・。

・・とまあ、ストアドプロシージャじゃなくてストアドファンクションなのですが、最後の引数”5”を追加したら、こんな状態に・・。
実際のプロシージャはこんな感じなのですが、上記エラーの対策がぐぐっても見つからない・・。

引数の数の問題か?・・・・・どうもそうっぽい・・・。
ためしに引数の数をこんな感じで変更してみた

すると、結果は正常に動くことから、もしかして引数の数に制限がある?

 

 

Table ‘./mysql/proc’ is marked as crashed and should be repaired の対処方法


logomysql

MySQLのストアドプロシージャを書いていたら、何が引き金だかこんなエラーを出力するようになった。

んーと、つまり、MyISAMで管理しているストアドプロシージャテーブルが壊れたからなんだと思うのですが、それにしても、MySQL 5.5が不安定でちょっと嫌な気分です。

まあ、ストアドプロシージャが壊れたわけでなく、MyISAMが壊れただけなので以下の、コマンドで無事回復

無事改善しましたよ!