MySQL 저장 프로시저는 하나의 단위로 호출할 수 있는 미리 작성된 SQL 문 모음입니다. MySQL 저장 프로시저에는 데이터베이스 성능 향상, 네트워크 트래픽 감소, 비즈니스 로직 통합 및 단순화, 보안 향상 등 많은 이점이 있습니다. 그러나 MySQL 저장 프로시저를 사용하는 과정에서 결과 집합을 반환해야 하는 경우도 있습니다. 이 기사에서는 MySQL 저장 프로시저를 사용하여 결과 집합을 반환하는 방법을 살펴보겠습니다.
MySQL 저장 프로시저 생성은 매우 간단하며 CREATE PROCEDURE 문을 통해 수행할 수 있습니다. 다음은 두 개의 정수 매개변수를 허용하고 이를 추가하고 결과를 반환하는 저장 프로시저의 간단한 예입니다.
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를 사용할 수 있습니다. CURSOR를 사용하면 결과 세트를 반복하고 결과를 변수에 저장할 수 있습니다. 다음은 제품 목록에 대한 결과 집합을 반환하는 예입니다.
DELIMITER //
CREATE PROCEDURE get_product_list()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE id INT;
DECLARE name VARCHAR(255);
DECLARE cur CURSOR FOR SELECT id, name FROM products;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
CREATE TABLE IF NOT EXISTS 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 테이블에 하나씩 삽입합니다. 마지막으로 쿼리 결과를 반환합니다.
저장 프로시저를 호출할 때 SELECT 문을 사용하여 반환된 결과 집합을 처리할 수 있습니다. 예:
CALL get_product_list();
이 문은 get_product_list 저장 프로시저를 호출하고 결과 집합을 반환합니다. SELECT 문을 사용하여 결과 세트를 콘솔에 출력할 수 있습니다.
SELECT * FROM temp_product_list
이 문은 temp_product_list 테이블의 모든 결과를 출력합니다.
요약
MySQL 저장 프로시저는 데이터베이스 성능을 향상하고, 네트워크 트래픽을 줄이고, 비즈니스 로직을 통합 및 단순화하고, 보안을 향상시키는 데 도움이 되는 매우 유용한 기술입니다. 실제 사용에서는 결과 집합을 반환해야 할 수도 있습니다. 이 경우 CURSOR를 사용하여 쿼리 결과를 탐색하고 결과를 테이블에 저장할 수 있습니다. 마지막으로 SELECT 문을 사용하여 반환된 결과 집합을 처리할 수 있습니다. 이 기사의 소개를 통해 독자들은 MySQL 저장 프로시저를 사용하여 결과 세트를 반환하는 방법을 더 깊이 이해하게 될 것이라고 믿습니다.
위 내용은 mysql 저장 프로시저 반환의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!