Mysql——関数
8091 ワード
一、関数概要 はストレージプロセスと同様に、関数も予めコンパイルされたSQL文のセットであり、その長所と短所もストレージプロセスと同様に、作成後、何度も呼び出すことができ、コードの再利用性を高め、同時にSQL文のコンパイル回数とサーバーとの接続回数を減らし、効率を高めた. ストレージ・プロシージャとは異なり、ストレージ・プロシージャには任意の戻り値(0を含む)があり得るが、関数には戻り値が1つしかなく、必要である.ストレージ・プロシージャは、バッチの挿入、更新、削除などに適しており、関数はデータ処理後に結果を返すのに適しています.
二、関数の作成と呼び出し
説明: 1️⃣関数のパラメータリストとストレージ・プロシージャは少し異なり、関数のパラメータ・リストにはパラメータ名とパラメータ・タイプ2の2つの部分しかありません.️⃣関数体はストアド・プロシージャと同様に、正当なSQL文のセットですが、関数体には結果を返すためのRETURN文が含まれている必要があります.このRETURN文は一般的に関数体の最後に置かれています.もちろん、最後に置かなくても間違いはありませんが、このような️⃣関数体が1つしかない場合は、BEGINとENDキーワード 2を省略し、CALLではなくSELECTを使用して 関数を呼び出す呼び出しを使用することもできます.
3、例 ①パラメータなし
②パラメータ aがあり、従業員の名前に基づいて給与を返す
b、支局部門名その平均賃金を照会する
2つの小数の和を計算する
三、関数の表示と削除 1、表示
2、削除:ストレージプロセスと同様に、関数も一度に複数の削除をサポートしない
二、関数の作成と呼び出し
DELIMITER $
CREATE FUNCTION ( ) RETURNS
BEGIN
;
END $
DELIMITER ;
説明: 1️⃣関数のパラメータリストとストレージ・プロシージャは少し異なり、関数のパラメータ・リストにはパラメータ名とパラメータ・タイプ2の2つの部分しかありません.️⃣関数体はストアド・プロシージャと同様に、正当なSQL文のセットですが、関数体には結果を返すためのRETURN文が含まれている必要があります.このRETURN文は一般的に関数体の最後に置かれています.もちろん、最後に置かなくても間違いはありませんが、このような️⃣関数体が1つしかない場合は、BEGINとENDキーワード 2を省略し、CALLではなくSELECTを使用して 関数を呼び出す呼び出しを使用することもできます.
SELECT ( );
3、例 ①パラメータなし
DELIMITER $
CREATE FUNCTION myf1() RETURNS INT
BEGIN
DECLARE c INT DEFAULT 0;# ,
SELECT COUNT(*) INTO c #
FROM employees;
RETURN c; # RETURN
END $
DELIMITER ;
#
SELECT myf1();
②パラメータ aがあり、従業員の名前に基づいて給与を返す
DELIMITER $
CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS DOUBLE
BEGIN
SET @sal = 0;# ,
SELECT salary INTO @sal #
FROM employees
WHERE last_name = empName;
RETURN @sal;
END $
DELIMITER ;
#
SELECT myf2('Hunold');
b、支局部門名その平均賃金を照会する
DELIMITER $
CREATE FUNCTION myf3(deptName VARCHAR(20)) RETURNS DOUBLE
BEGIN
DECLARE sal DOUBLE; # ,
SELECT AVG(salary) INTO sal #
FROM employees e
JOIN departments d ON e.department_id = d.department_id
WHERE d.department_name = deptName;
RETURN sal; #
END $
DELIMITER ;
#
SELECT myf3('IT');
2つの小数の和を計算する
DELIMITER $
CREATE FUNCTION myf4(num1 FLOAT,num2 FLOAT) RETURNS FLOAT
BEGIN
RETURN num1 + num2; # , BEGIN END
END $
DELIMITER ;
#
SELECT myf4(1.2,2.3);
三、関数の表示と削除 1、表示
SHOW CREATE FUNCTION ;
2、削除:ストレージプロセスと同様に、関数も一度に複数の削除をサポートしない
DROP FUNCTION ;
Tip
:ストレージ・プロシージャと同様に、関数も変更をサポートしません.