ホームページ >データベース >mysql チュートリアル >mysqlストアドプロシージャの配列

mysqlストアドプロシージャの配列

王林
王林オリジナル
2023-05-23 10:29:372356ブラウズ

MySQL のストアド プロシージャは、データベースに保存され、繰り返し呼び出して実行できる一連の SQL ステートメントです。 MySQL でストアド プロシージャを定義するための構文は基本的に関数と同じですが、ストアド プロシージャにはより多くの SQL ステートメントと制御ステートメントを含めることができるため、より複雑な操作を実行できます。 MySQL ストアド プロシージャでは、配列はデータの保存、読み取り、変更、削除に広く使用されています。この記事では、配列の定義、配列の操作、配列の使用例など、MySQL ストアド プロシージャの配列について詳しく説明します。

1. 配列の定義

配列は、同じデータ型の直列に接続されたデータ要素で構成される順序付けされたデータ構造です。 MySQL ストアド プロシージャでは、変数またはテーブルによって配列を実装できます。変数によって実装された配列は 1 次元または多次元の配列を定義でき、テーブルによって実装された配列はテーブル配列を定義できます。これら 3 つの配列の定義方法を以下に紹介します。

  1. 一次元配列

MySQL ストアド プロシージャでは、変数によって 1 次元配列を実装できます。 1 次元配列の定義方法は変数の定義と似ており、変数名の後に括弧 [] を追加し、括弧内に配列の長さを指定するだけです。たとえば、1 次元の整数配列を定義します。

DECLARE arr1 INT[5];

ここで、arr1 は配列名、INT はデータ型、5 は配列の長さです。ループ ステートメントを使用して配列を走査できます。例:

DECLARE i INT;
SET i = 1;
WHILE i <= 5 DO

SET arr1[i] = i;
SET i = i+1;

END WHILE;

上記のコードは、配列の各要素に 1 ~ 5 を割り当てます。

  1. 多次元配列

MySQL ストアド プロシージャでは、1 次元配列のネストされた定義によって多次元配列を実装できます。たとえば、2 次元の整数配列を定義します。

DECLARE arr2 INT3;

ここで、arr2 は配列名、INT はデータ型、3 と 4 は 2 つの配列の長さです。寸法。配列を走査するには、二重ループ ステートメントを使用できます。例:

DECLARE i INT;
DECLARE j INT;
SET i = 1;
WHILE i

SET j = 1;
WHILE j <= 4 DO
    SET arr2[i][j] = i*j;
    SET j = j+1;
END WHILE;
SET i = i+1;

END WHILE;

上記のコードは、配列の各要素を、それが配置されている行数と列数の積に割り当てます。

  1. テーブル配列

MySQL ストアド プロシージャでは、テーブル配列は複数のテーブルで構成される配列であり、各テーブルは同じ構造を持っています。たとえば、3 つのテーブルを含むテーブル配列を定義します。

DECLARE tab TABLE(

id INT,
name VARCHAR(20),
age INT

);
DECLARE arr3 tab[3];

ここで、tab はテーブルの構造、id、name、age はテーブルの列名、arr3 はテーブル配列の名前、3 は配列の長さです。ループ ステートメントを使用して、配列内の各テーブルを反復処理できます。例:

DECLARE i INT;
SET i = 1;
WHILE i

SET @sql = CONCAT('INSERT INTO arr3[', i, '] VALUES(1, "Tom", 20)');
PREPARE stmt FROM @sql;
EXECUTE stmt;
SET i = i+1;

END WHILE;
DEALLOCATE PREPARE stmt;

上記のコードは、arr3 という名前のテーブル配列内の各テーブルにデータを挿入します。

2. 配列操作

MySQL ストアド プロシージャの配列操作には、主に配列へのアクセス、変更、削除が含まれます。これらの操作方法を以下に紹介します。

  1. 配列アクセス

配列要素へのアクセスは、0 から始まる添字を使用して実現できます。たとえば、1 次元配列 arr1 の 3 番目の要素にアクセスするには:

SELECT arr1[2];

2 次元配列 arr2 の 2 行目、3 列目の要素にアクセスするには:

SELECT arr22;

テーブル配列 arr3 の 2 番目のテーブル内のすべてのデータにアクセスします:

SELECT * FROM arr3[2];

    #配列の変更
配列要素の変更は、代入操作によって実行できます。たとえば、1 次元配列 arr1 の 4 番目の要素を変更します。

SET arr1[3] = 10;

2 次元配列 arr2 の 2 行目、3 列目の要素を変更します。 :

SET arr22 = 5;

テーブル配列 arr3 の 3 番目のテーブルにある ID 1 のレコードの age 列を変更します:

UPDATE arr3[3] SET age = 25 WHERE id = 1;

    配列の削除
配列要素を削除するには、要素に NULL を割り当てるか、DELETE ステートメントを使用します。たとえば、1 次元配列 arr1 の 2 番目の要素を削除するには:

SET arr1[1] = NULL;

2 次元配列の 2 行目、3 列目の要素を削除するには配列 arr2:

SET arr22 = NULL;

テーブル配列 arr3 の 2 番目のテーブルにある ID 1 のレコードを削除します:

DELETE FROM arr3[2] WHERE id = 1;

3. 配列の使用例

配列は MySQL ストアド プロシージャで広く使用されています。以下に 2 つの配列の使用例、つまり配列のソートと配列の文字列への変換を紹介します。

    配列のソート
1 次元配列のソートは、ループ ステートメントと条件ステートメントを使用して実行できます。たとえば、1 次元配列 arr1 をバブル ソートします:

DECLARE i INT;

DECLARE j INT;
DECLARE temp INT;
SET i = 1;
WHILE i < ;= 4 DO

SET j = i+1;
WHILE j <= 5 DO
    IF arr1[i] > arr1[j] THEN
        SET temp = arr1[i];
        SET arr1[i] = arr1[j];
        SET arr1[j] = temp;
    END IF;
    SET j = j+1;
END WHILE;
SET i = i+1;

END WHILE;

ソートされた配列の出力結果は次のとおりです:

SELECT * FROM arr1;

    配列変換 For string
配列から文字列への変換は、ループ ステートメントと文字列関数を通じて実行できます。たとえば、1 次元配列 arr1 をコンマ区切りの文字列に変換します。

DECLARE i INT;

DECLARE str VARCHAR(100);
SET i = 1;
SET str = '';
WHILE i <= 5 DO

IF i = 1 THEN
    SET str = CONCAT(str, arr1[i]);
ELSE
    SET str = CONCAT(str, ',', arr1[i]);
END IF;
SET i = i+1;

END WHILE;

SELECT str;

変換された文字列の出力結果は次のとおりです:

1 ,2,3,4,5

4.概要

この記事では、配列の定義、配列の操作、配列の使用例など、MySQL ストアド プロシージャの配列について紹介します。配列は、順序付けられた効率的なデータ保存方法として、保存プロセスにおいて重要な応用価値を持っています。この記事を読むことで、読者は MySQL ストアド プロシージャでの配列の適用方法を習得し、実際の開発で配列を柔軟に適用してより複雑な操作を実行できるようになると思います。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。