ホームページ >データベース >mysql チュートリアル >mysqlストアドプロシージャ関数
MySQL は、ストアド プロシージャと関数の機能を備えた一般的なデータベース管理システムです。この記事では、MySQL のストアド プロシージャとストアド関数の概念、使用法、例を紹介します。
1. ストアド プロシージャ
ストアド プロシージャは、データベースに保存して繰り返し実行できる、プリコンパイルされた SQL ステートメントのセットです。データの挿入、更新、削除などの複雑なデータベース操作を実行するためによく使用されます。ストアド プロシージャはパラメータを受け取り、1 つ以上の結果セットを返すことができます。
CREATE PROCEDURE ステートメントを使用してストアド プロシージャを作成します。構文は次のとおりです。パラメータはオプションです: IN は入力パラメータを表し、OUT は出力パラメータを表し、INOUT は入力パラメータと出力パラメータの両方を表します。 datatype はデータ型を表し、size は長さを表し、NOT DETERMINISTIC は決定性を表し、SQL SECURITY はアクセス制御レベルを表し、COMMENT はコメントを表します。BEGIN と END の間にはストアド プロシージャ内の SQL ステートメントのセットがあります。
例:
CREATE PROCEDURE procedure_name ([IN | OUT | INOUT] parameter_name datatype [(size)]) [NOT DETERMINISTIC] [SQL SECURITY {DEFINER | INVOKER}] [COMMENT ‘string’] BEGIN -- 存储过程内部语句 END;
ストアド プロシージャの名前は select_all_users で、パラメータはなく、内部で SELECT * FROM users ステートメントを実行します。つまり、users テーブル内のすべてのデータをクエリします。
ストアド プロシージャの呼び出しCREATE PROCEDURE select_all_users () BEGIN SELECT * FROM users; END;
例:
CALL procedure_name(param1, param2, ...);
このステートメントは、前に作成した select_all_users ストアド プロシージャが実行されます。
ストアド プロシージャの削除CALL select_all_users();
例:
DROP PROCEDURE IF EXISTS procedure_name;
このステートメントは、select_all_users という名前のストアド プロシージャを削除します。
ストアド プロシージャの例DROP PROCEDURE IF EXISTS select_all_users;
出力結果は 10 です。
2. 関数
概念CREATE PROCEDURE double_num (IN num INT, OUT result INT) BEGIN SET result = num * 2; END;
例:
CALL double_num(5, @result); SELECT @result;
関数の名前は double_num、入力パラメータは num、戻り値の型は INT で、num 値が 2 倍されて返されます。
関数の呼び出しCREATE FUNCTION function_name ([parameter_name datatype [(size)]] [, ...]) RETURNS return_datatype BEGIN -- 函数内部语句 END;
CREATE FUNCTION double_num (num INT) RETURNS INT BEGIN RETURN num * 2; END;
SELECT double_num(5);
このステートメントは、double_num という名前の関数を削除します。
関数の例DROP FUNCTION IF EXISTS function_name;
DROP FUNCTION IF EXISTS double_num;
出力結果は120です。
3. ストアド プロシージャと関数の違い
ストアド プロシージャと関数の主な違いは次のとおりです:
戻り値の型が異なります: ストアド プロシージャは、次のようにする必要はありません。値を返しますが、関数は値を返す必要があります。 さまざまな処理方法: ストアド プロシージャは通常、挿入、更新、削除などの一部の操作を実行するために使用され、関数は数学的計算や文字列処理によく使用されます。以上がmysqlストアドプロシージャ関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。