MySQL ストアド プロシージャは、ユニットとして呼び出すことができる、事前に作成された SQL ステートメントのセットです。 MySQL ストアド プロシージャには、データベースのパフォーマンスの向上、ネットワーク トラフィックの削減、ビジネス ロジックの統合と簡素化、セキュリティの向上など、多くの利点があります。ただし、MySQL ストアド プロシージャを使用するプロセスでは、結果セットも返す必要がある場合があります。この記事では、MySQL ストアド プロシージャを使用して結果セットを返す方法について詳しく説明します。
MySQL ストアド プロシージャの作成は非常に簡単で、CREATE PROCEDURE ステートメントを使用して実行できます。次に、2 つの整数パラメータを受け取り、それらを加算して結果を返すストアド プロシージャの簡単な例を示します。
DELIMITER //
CREATE PROCEDURE add_numbers(IN num1 INT, IN num2 INT, OUT result INT)
BEGIN
SET result = num1 num2;
END //
DELIMITER ;
ストレージの呼び出しプロセスは次のとおりです。これも非常に簡単で、CALL ステートメントを使用するだけです。上記で作成したストアド プロシージャを呼び出し、結果をコンソールに出力する例を次に示します。
SET @a = 1;
SET @b = 2;
CALL add_numbers (@a, @ b, @result);
SELECT @result;
MySQL ストアド プロシージャで結果セットを返す必要がある場合は、カーソルを使用できます。 CURSOR を使用すると、結果セットを反復処理し、結果を変数に保存できます。製品リストの結果セットを返す例を次に示します。
DELIMITER //
CREATE PROCEDURE get_product_list()
BEGIN
DECLAREned INT DEFAULT FALSE;
DECLARE id INT ;
DECLARE name VARCHAR(255);
DECLARE cur CURSOR FOR SELECT ID, name FROM products FROM;
DECLARE CONTINUE HANDLER FOR NOT FOUND SETned = TRUE;
CREATE TABLE存在しない場合 temp_product_list(id INT, name VARCHAR(255));
TRUNCATE TABLE temp_product_list;
OPEN cur;
read_loop: LOOP
FETCH cur INTO id, name; IF done THEN LEAVE read_loop; END IF; INSERT INTO temp_product_list(id, name) VALUES(id, name);
END LOOP;
CLOSE cur;
SELECT * FROM temp_product_list;
END //
DELIMITER ;
上記のコードでは、まず CURSOR オブジェクトを作成し、クエリする製品リストを指定します。結果セットを走査しながら、結果を temp_product_list テーブルに 1 つずつ挿入します。最後に、クエリ結果を返します。
ストアド プロシージャを呼び出す場合、SELECT ステートメントを使用して返された結果セットを処理できます。例:
CALL get_product_list();
このステートメントは get_product_list ストアド プロシージャを呼び出し、結果セットを返します。 SELECT ステートメントを使用して、結果セットをコンソールに出力できます:
SELECT * FROM temp_product_list;
このステートメントは、temp_product_list テーブル内のすべての結果を出力します。
概要
MySQL ストアド プロシージャは、データベースのパフォーマンスの向上、ネットワーク トラフィックの削減、ビジネス ロジックの統合と簡素化、セキュリティの向上に役立つ非常に便利なテクノロジです。実際の使用では、結果セットを返す必要がある場合がありますが、この場合、CURSOR を使用してクエリ結果を走査し、結果をテーブルに保存できます。最後に、SELECT ステートメントを使用して、返された結果セットを処理できます。この記事の導入により、読者は MySQL ストアド プロシージャを使用して結果セットを返す方法についてより深く理解できるようになると思います。
以上がmysqlストアドプロシージャの戻り値の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。