MySQLにストアドファンクションという便利な機能があることを教えてもらった

商品の値段を決めるのに、セールス期間があって、セールス価格があって、さらに別の条件を満たしてるとそっちの価格を・・・
なんていうSQLを書いていたらとんでもない行数に\(^-^)/
これってどうにかならないの?と聞いたらストアドファンクションってものを教えて貰ったのでまとめておきます

とあるEC-CUBEのデフォルトの価格計算のSQL部分(抜粋)

商品の価格は規格(SサイズとかMサイズとか)が持っています。
その中の最大価格と最小価格を出して販売価格100円~1000円みたいな表記をしています。
ここにセール期間の場合はセール価格にするよ、というSQLを加えます

一目でわかるかと思いますが、ものすごい冗長なSQLになりました。
かつこのロジックを必要なところに全部コピペして修正しなくてはいけません・・・
そしてこのロジックやカラム名が変わったらまた全箇所修正・・・
こんな開発うんざりですよね!
そんな時はMySQLに頼ってみましょう

ストアドファンクションを作成します

SQLはこうなります

これでOK、関数を追加するイメージなのでそれほど難しくないと思います。
ただし・・・これはMySQLに持ってしまうのでソースコードからはロジックが追えないというデメリットもあります
また、バージョンや権限にもかなり依存するので使える場面は限られるかと思いますが知ってて損はないと思いました

ものすごい参考にさせていただきました!

MySQLのストアドファンクションで星座の計算 – CODE NAME: TUNE34

スポンサーリンク

シェアする

フォローする

コメントを残す

トップへ戻る