ホームページ >データベース >mysql チュートリアル >mysqlプロシージャ関数
MySQL は一般的に使用されるリレーショナル データベース管理システムであり、ユーザーが使用できるさまざまな機能と手順を提供します。このうち、MySQL のプロシージャと関数はデータベース サーバー内に記述されたプログラムです。この記事では、MySQL プロシージャ関数の基礎知識、使い方、例について詳しく説明します。
1. MySQL プロシージャ関数の基礎知識
MySQL プロシージャは、パラメータを受け入れ、入力パラメータが実行できる SQL ステートメントのコレクションです。何らかのアクション。 MySQL プロシージャは、カプセル化された SQL ステートメントと考えることができ、複数の SQL ステートメントを実行して特定の機能を実現できます。
MySQL プロセスには次の特徴があります。
(1) MySQL プロセスはサーバー側で実行されます。
(2) MySQL プロセスは入力パラメータを受け取り、出力パラメータを返すことができます。
(3) MySQL プロシージャは、テーブルの作成と更新、データベースへのデータの挿入と更新を行うことができます。
(4) MySQL プロシージャには、制御フロー ステートメント、ループ、分岐、および例外ハンドラーを含めることができます。
(5) MySQL プロセスは、ユーザー定義関数とサブプロセスをサポートします。
MySQL 関数は、MySQL で定義された単一のクエリ ステートメントのセットです。これらは 1 つ以上の入力パラメータを受け入れ、1 つ以上の値を返します。関数を使用して、データの計算、比較、変換、操作を行うことができます。
MySQL 関数には次のような特徴があります。
(1) MySQL 関数はサーバー側で実行されます。
(2) MySQL 関数は入力パラメータを受け取り、出力パラメータを返すことができます。
(3) MySQL 関数は単一の値のみを返すことができ、挿入、更新、削除などの操作を実行することはできません。
(4) MySQL 関数には、制御フロー ステートメント、ループ、分岐、例外ハンドラーを含めることはできません。
(5)MySQL 関数はユーザー定義関数とサブ関数をサポートしています。
2. MySQL プロセス関数の使用方法
MySQL では、ユーザーは CREATE PROCEDURE および CREATE FUNCTION ステートメントを使用してプロシージャと関数を作成できます。
MySQL プロシージャを作成する構文は次のとおりです:
CREATE PROCEDURE プロシージャ名 ([パラメータ])
BEGIN
[SQL statements]
END;
このうち、procedure_name はプロシージャの名前、parameters はプロシージャのパラメータ リスト、SQL ステートメントはプロシージャ中に実行される MySQL ステートメントです。
たとえば、2 つの入力パラメータを受け取り、その合計を返す単純な MySQL プロシージャを作成します。
CREATE PROCEDURE add(IN a INT, IN b INT)
BEGIN
SELECT a+b;
END;
MySQL 関数を作成する構文は次のとおりです:
CREATE FUNCTION function_name([ パラメーター]) RETURNS data_type
BEGIN
[SQL statements]
END;
このうち、function_name は関数の名前、parameters は関数のパラメータ リスト、data_type は関数によって返されるデータ型です。関数、SQL ステートメントは関数内で実行される MySQL ステートメントです。
たとえば、入力パラメータを受け取り、その二乗を返す単純な MySQL 関数を作成します。
CREATE FUNCTION square(x INT) RETURNS INT
BEGIN
RETURN x*x;
END;
3. MySQL プロセス関数の例
以下は簡単な MySQL プロセスの例です。現在のデータベースのテーブル名と行番号をコンソールに出力します:
CREATE PROCEDURE table_count()
BEGIN
DECLARE done INT DEFAULT FALSE; DECLARE t_name CHAR(32); DECLARE t_count INT; DECLARE cur CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_schema = DATABASE(); DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur; repeat FETCH cur INTO t_name; IF NOT done THEN SET @sql = CONCAT('SELECT COUNT(*) INTO "', t_name, '_count" FROM ', t_name); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @out = CONCAT(t_name, ': ', t_name, '_count'); SELECT @out; END IF; until done END REPEAT; CLOSE cur;
END;
上記のプロセスでは、カーソルを使用してデータベース内のすべてのテーブルを走査し、動的 SQL を使用して各テーブルの行数を取得してコンソールに出力します。
次は、文字列を受け取り、その中の各単語の最初の文字を返す単純な MySQL 関数の例です。
CREATE FUNCTION get_initials(str VARCHAR(255)) RETURNS VARCHAR(255)
BEGIN
DECLARE len INT DEFAULT 0; DECLARE i INT DEFAULT 0; DECLARE initial CHAR(1); DECLARE initials VARCHAR(255) DEFAULT ''; SET len = LENGTH(str); WHILE i<=len DO SET initial = SUBSTRING(str, i, 1); IF i = 1 OR SUBSTRING(str, i-1, 1) = ' ' THEN SET initials = CONCAT(initials, initial); END IF; SET i = i + 1; END WHILE; RETURN initials;
END;
上記の関数では、スペースに基づいて入力文字列を反復処理します。各単語を分割して最初の文字を取得し、それらを関数の戻り値として連結します。
概要
MySQL プロシージャ関数は MySQL の非常に重要な関数であり、開発者やデータベース管理者が複雑なデータ処理タスクを簡単に実行できるようにします。この記事では、MySQLプロシージャ関数の基礎知識や使い方、例を紹介します。この情報を通じて、MySQL 手続き型関数をよりよく理解して習得し、実際の開発でその利点を最大限に活用することができます。
以上がmysqlプロシージャ関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。