読者です 読者をやめる 読者になる 読者になる

Database JUNKY

MySQL,MariaDBを中心としたブログです

MySQL ストアドファンクションを使ってみましょう!

MySQLって、ストアドプロシージャとストアドファンクションの2つが利用できます。ストアドプロシージャは、CALL XXX って呼ぶもの、一方でストアドファンクションはSQLの中で呼べたりできるものです。 ストアドファンクションは戻り値が1つしか返せないとか色々と制約はあるので、やれることは限定されてきますが、SQLの一環で例えば、SUMとかCOUNTとかと同様の手順で、加えることができるので、可読性の良いSQLを書くことができます。

ちょっと例で説明しますが、日付をパラメータにして、消費税率を返すストアドファンクションを作成してみましたのでご一読を・・

情報処理教科書 データベーススペシャリスト 2016年版

情報処理教科書 データベーススペシャリスト 2016年版

Kindle Paperwhite (ニューモデル) Wi-Fi

Kindle Paperwhite (ニューモデル) Wi-Fi

概要

いまさらだけど、消費税率を求めるストアドファンクション、別にデータベースを見に行っているわけではないので 速いっす

ストアドファンクション

DELIMITER $$

DROP FUNCTION IF EXISTS taxrate ;

CREATE FUNCTION taxrate (_wdate date) RETURNS decimal(2,2)
NOT DETERMINISTIC
BEGIN

   IF _wdate >= '2014-04-01' THEN
     RETURN 0.08 ;
   ELSE
     RETURN 0.05 ;
   END IF ;
END $$

DELIMITER ;

利用例

mysql> select taxrate(current_date) ;
+-----------------------+
| taxrate(current_date) |
+-----------------------+
|                  0.05 |
+-----------------------+
1 row in set (0.00 sec)

mysql> select taxrate('2014-04-01') ;
+-----------------------+
| taxrate('2014-04-01') |
+-----------------------+
|                  0.08 |
+-----------------------+
1 row in set (0.00 sec)