MariaDB / MySQLでユーザー定義関数(UDF)を作成する方法|CREATE FUNCTIONの構文と実例付き
MariaDBやMySQLでユーザー定義関数(UDF)を作成したいときに使える、CREATE FUNCTION の構文と実例を紹介します。
このページでは、2つの整数の範囲からランダムな値を返す func_rand() 関数を例に、引数の定義・戻り値・DELIMITERの使い方まで、実務で役立つポイントを丁寧に解説しています。
「mysql ユーザー定義関数」「mariadb create function」「sql udf 作り方」などのキーワードでお探しの方におすすめです。
ユーザー定義関数の基本的な構文は以下です。
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 | +-----------------+
