>데이터 베이스 >MySQL 튜토리얼 >저장 프로시저를 사용하여 MySQL 결과 세트를 어떻게 반복할 수 있습니까?

저장 프로시저를 사용하여 MySQL 결과 세트를 어떻게 반복할 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-19 00:42:02979검색

How Can I Loop Over MySQL Result Sets Using Stored Procedures?

MySQL의 결과 세트 반복: 프로시저 기반 접근 방식

프로그래머는 종종 루프에서 MySQL 쿼리 결과를 처리해야 합니다. 이 작업은 일반적으로 PHP의 mysql_fetch_assoc 함수나 다른 프로그래밍 언어의 유사한 방법을 사용하여 수행됩니다. 그러나 MySQL에서 쿼리 결과를 반복하는 저장 프로시저를 생성하는 것도 가능합니다.

이를 달성하려면 다음과 같은 저장 프로시저 템플릿을 사용할 수 있습니다.

CREATE PROCEDURE GetFilteredData()
BEGIN
  DECLARE bDone INT;

  DECLARE var1 CHAR(16); 
  DECLARE var2 INT;
  DECLARE var3 VARCHAR(50);
  
  DECLARE curs CURSOR FOR SELECT something FROM somewhere WHERE some stuff;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET bDone = 1;

  DROP TEMPORARY TABLE IF EXISTS tblResults;
  CREATE TEMPORARY TABLE IF NOT EXISTS tblResults  (
    Fld1 type,
    Fld2 type,
    ...
  );

  OPEN curs;

  SET bDone = 0;
  REPEAT
    FETCH curs INTO var1, var2, var3;

    IF whatever_filtering_desired
       INSERT INTO tblResults VALUES (var1, var2, var3);
    END IF;
  UNTIL bDone END REPEAT;

  CLOSE curs;
  SELECT * FROM tblResults;
END

고려 사항:

  • 저장 프로시저의 유연성을 높이려면 쿼리, 특히 검색 기준을 매개변수화하는 것이 좋습니다.
  • 세션 ID 전달을 고려하세요. 다중 세션 시나리오에서는 고유한 임시 테이블 이름을 보장해야 합니다.
  • 커서는 결과를 반복하는 절차적 접근 방식을 제공하지만 커서 사용은 불필요하거나 성능이 제한될 수 있습니다. 순수하게 선언적인 SQL 솔루션을 살펴보는 것이 좋습니다.

위 내용은 저장 프로시저를 사용하여 MySQL 결과 세트를 어떻게 반복할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.