mysqlストアドプロシージャの戻り値

王林
リリース: 2023-05-11 17:25:37
オリジナル
1427 人が閲覧しました

MySQL ストアド プロシージャ return

MySQL ストアド プロシージャは、MySQL データベース内で実行できるプログラムで、入力パラメータを受け取り、一連の操作を実行して結果を返すことができます。 SQL ステートメントとは異なり、ストアド プロシージャはプリコンパイルして MySQL データベースに保存できるため、プログラムの実行効率が向上します。

ストアド プロシージャは通常、複雑なビジネス ロジックの処理に使用され、データの送信と処理時間を短縮し、実行効率を向上させることができます。ストアド プロシージャを使用すると、アプリケーション開発時のセキュリティと保守性も向上します。

MySQL ストアド プロシージャは、複雑な結果セットだけでなく、単純な整数、文字列、日付と時刻など、さまざまな種類の結果を返すことができます。この記事では、MySQL ストアド プロシージャを作成して結果を返す方法について説明します。

MySQL ストアド プロシージャの作成

MySQL ストアド プロシージャは次の方法で作成できます。

CREATE PROCEDURE pro_name()
BEGIN    
    -- 存储过程的主体    
END;
ログイン後にコピー

このうち、pro_name はストアド プロシージャの名前であり、BEGIN と BEGIN の間の名前です。 END は、主体となるストアド プロシージャです。

以下は、2 つの整数の合計を返すことができる簡単なストアド プロシージャの例です。

CREATE PROCEDURE add_numbers(IN a INT, IN b INT, OUT sum INT)
BEGIN
    SET sum = a + b;
END;
ログイン後にコピー

このストアド プロシージャは、2 つの整数パラメータ a と b を受け取り、それらを加算して合計に保存します。変数。ストアド プロシージャが実行されると、sum 変数の値が返されます。

MySQL ストアド プロシージャの実行

MySQL ストアド プロシージャは、次の方法で実行できます。

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

ここで、pro_name は、実行するストアド プロシージャの名前です。上記の例のストアド プロシージャは、次の方法で実行できます。

CALL add_numbers(1, 2, @sum);
SELECT @sum;
ログイン後にコピー

上記のコードは、add_numbers ストアド プロシージャを呼び出し、パラメータとして 1 と 2 を a と b に渡し、sum 変数を渡します。出力パラメータとして。次に、SELECT ステートメントを使用して、sum 変数の値を取得できます。

MySQL ストアド プロシージャは結果セットを返す

MySQL ストアド プロシージャは、単純なデータ型を返すだけでなく、結果セットを返すこともできます。結果セットは、複数の行と列を含むことができるデータのコレクションです。 MySQL ストアド プロシージャは、次のメソッドを使用して結果セットを返すことができます。

CREATE PROCEDURE pro_name()
BEGIN    
    SELECT columns FROM table WHERE condition;    
END;
ログイン後にコピー

ここで、columns は返される列名、table はクエリされるテーブル名、condition は取得される条件です。

次に、結果セットを返すストアド プロシージャの例を示します。

CREATE PROCEDURE get_users()
BEGIN
    SELECT * FROM users;
END;
ログイン後にコピー

このストアド プロシージャは、users テーブル内のすべての行と列を返します。このストアド プロシージャは次のコマンドで呼び出すことができます。

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

これにより、users テーブルのすべての行と列が返されます。

MySQL ストアド プロシージャは複数の結果セットを返します

MySQL ストアド プロシージャは複数の結果セットを返すこともできます。複数の結果セットは、1 つ以上の SELECT ステートメントによって返されるデータのコレクションです。

MySQL ストアド プロシージャは、次の方法で複数の結果セットを返すことができます:

CREATE PROCEDURE pro_name()
BEGIN    
    SELECT columns FROM table WHERE condition;    
    SELECT columns FROM table WHERE condition;    
END;
ログイン後にコピー

そのうち、columns は返される列名、table はクエリされるテーブル名、condition は取得する条件。

以下は、複数の結果セットを返すストアド プロシージャの例です。

CREATE PROCEDURE get_data()
BEGIN
    SELECT * FROM users;
    SELECT * FROM orders;
END;
ログイン後にコピー

このストアド プロシージャは、users テーブルとorders テーブルのすべての行と列を返します。このストアド プロシージャは、次の方法で呼び出すことができます。

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

これにより、2 つの SELECT ステートメントによって返された 2 つの結果セットが返されます。

MySQL ストアド プロシージャは条件ステートメントを使用して結果を返します

MySQL ストアド プロシージャは条件ステートメントを使用して結果を返すことができます。条件文では、IF、CASE、LOOP などの文を使用できます。

次に、IF ステートメントを使用して結果を返すストアド プロシージャの例を示します。

CREATE PROCEDURE get_user_status(IN user_id INT, OUT status VARCHAR(255))
BEGIN
    DECLARE user_status INT;
    SELECT user_status INTO user_status FROM users WHERE id = user_id;
    
    IF user_status = 0 THEN
        SET status = 'Inactive';
    ELSEIF user_status = 1 THEN
        SET status = 'Active';
    ELSE
        SET status = 'Unknown';
    END IF;
END;
ログイン後にコピー

このストアド プロシージャは、整数パラメータ user_id を受け取り、ユーザーのステータスに基づいて文字列を返します。ストアド プロシージャは、まず user_id に対応するユーザー ステータスを users テーブルから取得し、それを user_status 変数に保存します。次に、IF ステートメントを使用してユーザーのステータスを確認し、ステータス変数の値を設定します。最後に、ストアド プロシージャはステータス変数を出力パラメータとして返します。

上記は、MySQL ストアド プロシージャによって返される結果の例です。ストアド プロシージャは、MySQL データベースの非常に強力で便利なツールであり、複雑なビジネス ロジックを処理し、アプリケーションの実行効率を向上させることができます。特定のビジネス ニーズに基づいてデータを処理するには、適切なストアド プロシージャを選択する必要があります。

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

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