トップへ(mam-mam.net/)

MariaDB(MySQL)でユーザー定義関数

検索:

MariaDB(MySQL)でユーザー定義関数を作る

ユーザー定義関数とは、ユーザーが独自の関数を作ってSQLで使用できるようにする機能です。
基本的な構文は以下です。

CREATE FUNCTION 関数名(パラメータ1 型, パラメータ2 型, ...) RETURNSBEGIN
  -- 処理を入れる
  RETURN 戻り値;
END;

以下は 「from_val」以上「to_val」以下のランダムな値を返す「func_rand」関数を作成しています。

-- 「func_rand」関数が存在していたら削除する
DROP FUNCTION IF EXISTS func_rand;

DELIMITER //  -- 「;」を「//」に一時的に変更する

-- ここから「func_rand」関数の定義を開始
CREATE FUNCTION func_rand(from_val INT, to_val INT) RETURNS INT
BEGIN
  IF from_val > to_val THEN
    SET @tmp = from_val;
    SET from_val = to_val;
    SET to_val = @tmp;
  END IF;
  RETURN from_val + FLOOR(RAND() * (to_val - from_val + 1));
END//

DELIMITER ;  -- 「//」を「;」に戻す

作成した「func_rand」関数を使ってみます。

SELECT func_rand(-1,2);
+-----------------+
| func_rand(-1,2) |
+-----------------+
|               0 |
+-----------------+

SELECT func_rand(-1,2);
+-----------------+
| func_rand(-1,2) |
+-----------------+
|               2 |
+-----------------+

SELECT func_rand(-1,2);
+-----------------+
| func_rand(-1,2) |
+-----------------+
|              -1 |
+-----------------+
MariaDB(MySQL)のサンプルSQL一覧に戻る