ストアドプロシージャ最初にNendを担当させて頂いてるtosh01です。最初に質問なのですが、MySQLにおいて、あなたはストアドプロシージャをどのようなケースで利用されたことがありますでしょうか?自身の経験が業務系にわりと寄っており、DBへのクエリはすべてストアドプロシージャに持たせてしまうことも多く、バッチや計算処理を要求される際によく使用していたせいか、使いたい気持ちがあります。いうものの、それらは他のDB製品での話であり、MySQLに関しては過去にそれほど使う機会もなく現在お勉強中、もちろんMySQLでストアドプロシージャなど使ったことがない為、質問させていただいてます。5.0から実装されているらしいストアドプロシージャですが、やはりアプリ側のプログラムからの問合せだけの場合より、MySQLにおいてもDB操作の幅が広がりそうで、MySQLでも状況によっては役に立つ場面がありそう、というか個人的に好きな為、ブログという名目で時間を取ることが出来るこの機会に確認してみました。必要性そもそもストアドプロシージャのメリットってなんでしょうか?MySQLの場合は、DBサーバへの負荷が大きくなるだとか、パフォーマンスもよくないという意見もあり、メリットよりもデメリットの方が多く見られたりもするのですが、DBの種類にこだわらなければ下記のようなものが見られました。・デバッグしづらい?もちろんこれらはDBの種類によって違うのでしょうが、実際にMySQLでも使える以上、下記に使用例を挙げてみたいと思います。ProcedureとCursor色々調べてみるとMySQLのストアドプロシージャの定義構文自体、他のDB製品とSQLの規約こそ違うものの、書き方はあまり違うものではないことがわかりましたので下記に記述します。(※OracleのPL/SQL等との違いは参照をご参考下さい。[/sql]上記がMySQLでの定義構文になります。SQLにおけるカーソル(Cursor)なのですが、Wikipediaにはデータベースにおけるカーソル(Cursor)は、一連のデータに順にアクセスする際の検索条件および「現在位置」を保持するデータ要素である。と若干難解な解説がありますが、複数レコードを1行ずつ指定した条件をもとに更新していく必要がある場合に便利だと思いますので以下に構文を載せてみます。[/sql]を操作する、実際のストアドプロシージャを作ります。ここでは上記テーブルにおいて、resultカラムを更新する簡単なupdate処理を書いてみたいと思います。_change_flgによってresultカラムへ出力する計算を変化。[/sql]として、上記プロシージャを保存します。Browserを使用。)そして作ったプロシージャはCALLで呼び出すことができます。[/sql]最後に今回は調査という名目でシンプルな使用例を挙げさせていただくだけに留まってしまいましたが、CURSORにしても使い方次第で大きくパフォーマンス等変わってくると思いますのでMySQLにおけるストアドプロシージャの利点も検証しつつ、データ処理の仕様を考えていけたらと思います。引数を使ったもの等、より詳しい用法やストアドファンクションに関しては参照を参考にして下さい。15:00Tweet関連記事2015-03-26たくさんのNagiosを抱えるあなたのためのThrukNagiosマン、Nagiosガールのみなさん、こんにちは。あなたは何...2015-02-27innodb_print_all_deadlocksを試してみましたh_nagayamaです。InnoDBさんとNeo4jさんごきげんよう。k_oomoriです。業務でデータノード間の関連性を...2014-07-29MongoDBとHiveでごにょごにょ事始めこんにちは、s_mamedaifukuです。Are青山のアドテク会社。アドネットワークやDSPを開発・運用。サーバを止めてみたよ。インターン:実業務体験編インターンでCTR予測をしましたSearchArchiveスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。