ホームページ  >  記事  >  データベース  >  mysqlプロシージャ関数の使い方

mysqlプロシージャ関数の使い方

PHPz
PHPz転載
2023-05-28 14:46:281378ブラウズ

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

  1. MySQL プロシージャ

MySQL プロシージャは複数の SQL ステートメントで構成されます作成され、パラメータを受け取り、入力パラメータに対して特定の操作を実行します。 MySQL プロシージャは、特定の機能を実現するために複数の 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([parameters]) 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) = &#39; &#39; THEN
              SET initials = CONCAT(initials, initial);
        END IF;
        SET i = i + 1;
  END WHILE;
  RETURN initials;

END;

上記の関数では、次の操作を繰り返します。文字列を作成し、スペースに基づいて各単語を分割し、その最初の文字を取得して、関数の戻り値としてそれらを連結します。

以上がmysqlプロシージャ関数の使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。