mysqlプロシージャ関数

王林
リリース: 2023-05-08 19:38:36
オリジナル
857 人が閲覧しました

MySQL は一般的に使用されるリレーショナル データベース管理システムであり、ユーザーが使用できるさまざまな機能と手順を提供します。このうち、MySQL のプロシージャと関数はデータベース サーバー内に記述されたプログラムです。この記事では、MySQL プロシージャ関数の基礎知識、使い方、例について詳しく説明します。

1. MySQL プロシージャ関数の基礎知識

  1. MySQL プロシージャ

MySQL プロシージャは、パラメータを受け入れ、入力パラメータが実行できる SQL ステートメントのコレクションです。何らかのアクション。 MySQL プロシージャは、カプセル化された SQL ステートメントと考えることができ、複数の SQL ステートメントを実行して特定の機能を実現できます。

MySQL プロセスには次の特徴があります。

(1) MySQL プロセスはサーバー側で実行されます。

(2) MySQL プロセスは入力パラメータを受け取り、出力パラメータを返すことができます。

(3) MySQL プロシージャは、テーブルの作成と更新、データベースへのデータの挿入と更新を行うことができます。

(4) MySQL プロシージャには、制御フロー ステートメント、ループ、分岐、および例外ハンドラーを含めることができます。

(5) MySQL プロセスは、ユーザー定義関数とサブプロセスをサポートします。

  1. MySQL 関数

MySQL 関数は、MySQL で定義された単一のクエリ ステートメントのセットです。これらは 1 つ以上の入力パラメータを受け入れ、1 つ以上の値を返します。関数を使用して、データの計算、比較、変換、操作を行うことができます。

MySQL 関数には次のような特徴があります。

(1) MySQL 関数はサーバー側で実行されます。

(2) MySQL 関数は入力パラメータを受け取り、出力パラメータを返すことができます。

(3) MySQL 関数は単一の値のみを返すことができ、挿入、更新、削除などの操作を実行することはできません。

(4) MySQL 関数には、制御フロー ステートメント、ループ、分岐、例外ハンドラーを含めることはできません。

(5)MySQL 関数はユーザー定義関数とサブ関数をサポートしています。

2. MySQL プロセス関数の使用方法

MySQL では、ユーザーは CREATE PROCEDURE および CREATE FUNCTION ステートメントを使用してプロシージャと関数を作成できます。

  1. MySQL プロシージャの作成

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;

  1. MySQL 関数の作成

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 プロセス関数の例

  1. 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 を使用して各テーブルの行数を取得してコンソールに出力します。

  1. MySQL 関数の例

次は、文字列を受け取り、その中の各単語の最初の文字を返す単純な 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート