ホームページ > データベース > mysql チュートリアル > mysqlはストアドプロシージャを返します

mysqlはストアドプロシージャを返します

PHPz
リリース: 2023-05-08 19:28:36
オリジナル
1008 人が閲覧しました

MySQL は、オープンソースの強力なリレーショナル データベース管理システムです。ストアド プロシージャは、データベース内で特定の機能またはタスクを実行する、プリコンパイルされた SQL コード ブロックです。ストアド プロシージャを使用すると、重複コードが削減され、データベース操作の効率が向上し、セキュリティが確保されます。

この記事では、MySQL でのストアド プロシージャの使用と戻り値の処理に焦点を当てます。

1. MySQL ストアド プロシージャの作成と使用
MySQL ストアド プロシージャの作成には、次の手順が含まれます:

  1. ストアド プロシージャ名とパラメータの定義
    特定の実装メソッドは:
CREATE PROCEDURE procedure_name (IN parameter_name DATA_TYPE)
ログイン後にコピー

このうち、PROCEDURE はストアド プロシージャを作成するためのキーワード、procedure_name はストアド プロシージャの名前、IN パラメータ名は入力パラメータの名前、DATA_TYPE はデータです入力パラメータのタイプ。

  1. ストアド プロシージャ ステートメントを指定します
    具体的な実装方法は次のとおりです。
BEGIN
    -- 存储过程语句
END
ログイン後にコピー

このうち、BEGIN と END はストアド プロシージャ ステートメントを指定するためのキーワードです。 BEGIN と END の間に複数の SQL ステートメントを記述して、ストアド プロシージャの特定の機能を実装できます。

  1. 結果を返す
    ストアド プロシージャでは、SELECT ステートメントを使用して結果を返すことができます。以下に示すように:
CREATE PROCEDURE procedure_name (IN parameter_name DATA_TYPE)
BEGIN
    SELECT * FROM table_name WHERE column_name = parameter_name;
END
ログイン後にコピー

このうち、* はワイルドカード文字で、すべての列のデータを返すことを意味し、table_name はテーブル名、column_name は列名です。

2. MySQL ストアド プロシージャの呼び出し
MySQL ストアド プロシージャを作成した後、CALL ステートメントを使用してストアド プロシージャを呼び出すことができます。具体的な実装方法は次のとおりです:

CALL procedure_name(parameter_value);
ログイン後にコピー

このうち、CALL はストアド プロシージャを呼び出すためのキーワード、procedure_name はストアド プロシージャの名前、parameter_value はストアド プロシージャに渡されるパラメータ値です。

3. MySQL ストアド プロシージャの戻り値処理
MySQL ストアド プロシージャは、単一値と結果セットの 2 種類の値を返すことができます。単一の値の場合は OUT パラメーターを使用してその値を返すことができ、結果セットの場合は CURSOR を使用できます。

  1. OUT パラメータを通じて単一の値を返す
    具体的な実装方法は、次に示すように、CREATE PROCEDURE ステートメントで OUT パラメータを宣言することです。このうち、OUT は OUT パラメータのステートメント キーワード、out_parameter_name は出力パラメータの名前、DATA_TYPE は出力パラメータのデータ型です。
ストアド プロシージャ ステートメントでは、次に示すように、SET ステートメントを使用して OUT パラメータの値を設定できます。

CREATE PROCEDURE procedure_name (IN parameter_name DATA_TYPE, OUT out_parameter_name DATA_TYPE)
ログイン後にコピー

このうち、COUNT(*) は集計関数です。条件を満たすレコードの総数を返します。

ストアド プロシージャを呼び出す場合、以下に示すように、SELECT ステートメントを使用して OUT パラメータの値を取得できます。

CREATE PROCEDURE procedure_name (IN parameter_name DATA_TYPE, OUT out_parameter_name DATA_TYPE)
BEGIN
    SET out_parameter_name = (SELECT COUNT(*) FROM table_name WHERE column_name = parameter_name);
END
ログイン後にコピー

このうち、@out_parameter_value は、ストアに使用されるユーザー変数です。 OUTパラメータの値。

CURSOR を介して結果セットを返す

CURSOR は、結果セットを走査するために使用されるデータ型です。 MySQL ストアド プロシージャでは、DECLARE、OPEN、FETCH、CLOSE、END キーワードを使用して CURSOR と結果セットを定義できます。

  1. 具体的な実装方法は次のとおりです:
  2. CALL procedure_name(parameter_value, @out_parameter_value);
    SELECT @out_parameter_value;
    ログイン後にコピー
このうち、DECLARE は CURSOR を宣言するキーワード、FOR SELECT column_name FROM table_name は結果セットのクエリ文、OPEN はキーワードを宣言します。 open CURSOR; FETCH は CURSOR 内の次のデータ行を取得するためのキーワードです; WHILE @@FETCH_STATUS = 0 は結果セット全体が走査されたかどうかを確認するための条件です; CLOSE は CURSOR を閉じるためのキーワードです。

ストアド プロシージャを呼び出す場合、以下に示すように、SELECT ステートメントを使用して CURSOR 内のデータを取得できます:

CREATE PROCEDURE procedure_name ()
BEGIN
    DECLARE cursor_name CURSOR FOR SELECT column_name FROM table_name;
    OPEN cursor_name;
    FETCH cursor_name INTO variable_name;
    WHILE @@FETCH_STATUS = 0 DO
        -- 处理结果集
        FETCH cursor_name INTO variable_name;
    END WHILE;
    CLOSE cursor_name;
END
ログイン後にコピー
4. MySQL ストアド プロシージャの注意事項

使用プロセス内MySQL ストアド プロシージャの場合は、次の点に注意する必要があります。


ストアド プロシージャ内の変数名は、キーワードと同じ名前であってはなりません。

    SET ステートメントを使用すると、ストアド プロシージャ内の変数の値を設定できます。
  1. セミコロンを使用して、ストアド プロシージャ内の複数のステートメントを区切ることができます。
  2. ストアド プロシージャ内のパラメーター名とデータ テーブル内の列名を同じにしないでください。そうしないと、あいまいさが発生する可能性があります。
  3. ストアド プロシージャを使用するときは、かっこ () を追加するように注意してください。そうしないと、構文エラーが発生する可能性があります。
  4. 概要:
  5. MySQL ストアド プロシージャは、データベース内の特定の関数やタスクを実行できる、事前にコンパイルされた SQL コードのブロックです。ストアド プロシージャを使用すると、重複コードが削減され、データベース操作の効率が向上し、セキュリティが確保されます。この記事では、MySQL ストアド プロシージャの作成、呼び出し、戻り値の処理とストアド プロシージャを使用する際の注意事項を紹介します。 MySQL ストアド プロシージャを柔軟に使用することで、開発者はデータベース操作をより効率的に完了できるようになります。

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

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