リストmysqlの数は、関数が付属していますが、何回かの関数は、ストアド関数をカスタマイズする必要があるこの時間のニーズを満たすために非常に良いではありませんが付属して、ストアド関数とストアドプロシージャは、SQLコードの一部の単純なカプセル化に多少似ている特定の関数を完了し、結果を返します。構文は次のとおりです:
CREATE FUNCTION function RETURNS 戻り値の型
開始
SQLステートメント....
リターン
終了
ストアドプロシージャとは異なり、ストアド関数は出力パラメータや入出力パラメータの型を指定することはできません。ストアド関数は入力型のみを指定することができ、INを持つことはできません。 また、ストアド関数はRETURNコマンドで処理結果を呼び出し元に返すことができます。戻り値の型は、引数リストに続く RETURNS コマンドであらかじめ指定する必要があることに注意してください。以下にフィボナッチ級数を計算する関数を作成します。
ここでは、ストアド関数の先頭としてfn_を使用して、それがより簡単にストアドプロシージャのsp_の先頭から区別できるように、上記のステートメントからストアドプロシージャで見ることができるステートメントの流れを分析することもストアド関数に使用することができます同じ、DECLARE宣言変数とSETセット変数も例外処理ステートメントの定義も適応されるを含む、もちろん、ストアド関数に使用することができます、selectキーワードを使用してストアド関数の実行は、同時に複数のストアド関数を実行することができます注意してください。selectキーワードを使用して、ストアド関数の実装では、同時に複数のストアド関数を実行することができますまあ、ストアド関数は、このように定義されている、非常にストアドプロシージャに似ていませんか?しかし、違いがある、この点を分析するために残ることです。OKを〜、さらにストアド関数をよく理解するために、次のユーザーのストアド関数を挿入するユーザーを書き込みます:
create function fn_get_bom_child(pid VARCHAR(10))
varchar(4000)を返します。
開始
DECLARE temp VARCHAR(10000).
DECLARE tempChild VARCHAR(4000).
SET temp = '';
SET tempChild = pid;
WHILE tempChild IS NOT NULL
DO
SET temp = CONCAT(temp,',',tempChild);
SELECT GROUP_CONCAT(comp_material_id) into tempChild from t_bom_info where FIND_IN_SET(parent_material_id,tempChild);
WHILE を終了します。
RETURN temp.
終了