MySQLの関数
8006 ワード
関数とは
紹介:
事前にコンパイルされ、データベースに格納されたSQL文のセットを経て、バッチ文が理解されます.
メリット: は、データベースとアプリケーション・サーバ間のデータの転送を削減します. は、データ処理の効率を向上させる.
関数とストアド・プロシージャの違い:
関数:
キーワード:
適用シーン:
キーワード:
適用シーン:
構文:
CREATE FUNCTION関数名(パラメータリスト)RETURNS戻りタイプ
パラメータのリスト:
パラメータ名パラメータタイプ
コードの例:
ヒント:
関数体には必ずreturn文がありますが、エラーが報告されていない場合は、return文が関数体の最後に置かれていない場合もエラーは報告されませんが、推奨されません.
関数体に一言だけある場合はbegin endを省略できます.
呼び出し関数
構文:
SELECT関数名(パラメータリスト);
コードの例:
関数の表示
構文:
SHOW CREATE FUNCTION関数名;
コードの例:
関数の削除
構文:
DROP FUNCTION関数名;
コードの例:
紹介:
事前にコンパイルされ、データベースに格納されたSQL文のセットを経て、バッチ文が理解されます.
メリット:
sql , 。
関数とストアド・プロシージャの違い:
関数:
キーワード:
FUNCTION
呼び出し構文:SELECT ()
:
。
適用シーン:
, 。
ストアド・プロシージャ:キーワード:
PROCEDURE
呼び出し構文:CALL ()
:
0
. 適用シーン:
、 。
関数の作成構文:
CREATE FUNCTION関数名(パラメータリスト)RETURNS戻りタイプ
BEGIN
END
パラメータのリスト:
パラメータ名パラメータタイプ
:
delimiter ( :delimiter $)
コードの例:
delimiter $
CREATE FUNCTION ( ,...) RETURNS
BEGIN
return ;
END $
ヒント:
関数体には必ずreturn文がありますが、エラーが報告されていない場合は、return文が関数体の最後に置かれていない場合もエラーは報告されませんが、推奨されません.
関数体に一言だけある場合はbegin endを省略できます.
呼び出し関数
構文:
SELECT関数名(パラメータリスト);
コードの例:
/*
* 1.
*/
# :
DELIMITER $
CREATE FUNCTION myf1() RETURNS INT
BEGIN
DECLARE c INT DEFAULT 0;#
SELECT COUNT(*) INTO c#
FROM employees;
RETURN c;
END $
#
SELECT myf1()$
/*
* 2.
*/
# 1: ,
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 $
#
SELECT myf2('k_ing') $
# 2: ,
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 $
#
SELECT myf3('IT')$
# 3: float,
DELIMITER $
CREATE FUNCTION myf4(num1 FLOAT,num2 FLOAT) RETURNS FLOAT
BEGIN
DECLARE SUM FLOAT DEFAULT 0;
SET SUM = num1 + num2;
RETURN SUM;
END $
#
SELECT myf4(1,2)$
関数の表示
構文:
SHOW CREATE FUNCTION関数名;
コードの例:
SHOW CREATE FUNCTION myf3;
関数の削除
構文:
DROP FUNCTION関数名;
コードの例:
DROP FUNCTION myf3;