MariaDB(MySQL)でユーザー定義関数を作る
ユーザー定義関数とは、ユーザーが独自の関数を作ってSQLで使用できるようにする機能です。
基本的な構文は以下です。
CREATE FUNCTION 関数名(パラメータ1 型, パラメータ2 型, ...) RETURNS 型 BEGIN -- 処理を入れる 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 | +-----------------+