> 데이터 베이스 > MySQL 튜토리얼 > 저장 프로시저에서 MySQL 열 이름을 동적으로 반복하려면 어떻게 해야 합니까?

저장 프로시저에서 MySQL 열 이름을 동적으로 반복하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2025-01-04 04:28:38
원래의
851명이 탐색했습니다.

How Can I Dynamically Iterate Through MySQL Column Names in a Stored Procedure?

저장 프로시저에서 MySQL 열 이름의 동적 반복

MySQL에서는 테이블에서 열 이름을 추출하는 것이 데이터베이스 조작 작업의 일반적인 요구 사항입니다. 열 이름을 프로그래밍 방식으로 반복하고 해당 값에 따라 작업을 수행하려면 저장 프로시저를 사용할 수 있습니다.

SHOW COLUMNS FROM myTable 문은 이름을 포함하여 열 메타데이터를 검색합니다. 그러나 저장 프로시저에서 이러한 이름을 반복하려면 커서와 루프 구조가 필요합니다.

커서 및 루프 구현

커서는 다음을 허용하는 도구입니다. 일련의 레코드를 통한 순차적 반복. 이 경우 커서 col_names는 INFORMATION_SCHEMA.COLUMNS 테이블에서 열 이름을 가져오는 데 사용됩니다. OPEN 문은 커서를 초기화하고 FETCH는 커서를 다음 행으로 이동시키고 가져온 값을 지정된 변수에 할당합니다.

DECLARE col_names CURSOR FOR
SELECT column_name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'tbl_name'
ORDER BY ordinal_position;
로그인 후 복사

루프를 실행하기 위해 카운터 변수 i가 초기화되고 변수와 비교됩니다. 루프가 종료되어야 하는 시점을 결정하기 위해 FOUND_ROWS()에서 반환된 행 수입니다. 루프 내에서 FETCH 문은 다음 열 이름을 검색하여 col_name 변수에 할당합니다. 열 이름에 대해 수행할 작업을 여기에 삽입할 수 있습니다.

SET i = 1;
the_loop: LOOP

   IF i > num_rows THEN
        CLOSE col_names;
        LEAVE the_loop;
    END IF;

    FETCH col_names
    INTO col_name;     

    //do whatever else you need to do with the col name

    SET i = i + 1;  
END LOOP the_loop;
로그인 후 복사

실제 예

이러한 접근 방식을 활용하면 열 이름에 동적으로 액세스하는 것이 가능해집니다. 저장 프로시저에서 해당 작업을 수행합니다. 다음 예를 고려하십시오.

CREATE PROCEDURE get_cols()
BEGIN
    DECLARE col_names CURSOR FOR
    SELECT column_name
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE table_name = 'my_table'
    ORDER BY ordinal_position;

    DECLARE done INT DEFAULT FALSE;
    DECLARE col_name VARCHAR(255);

    OPEN col_names;
    main_loop: LOOP
        FETCH col_names INTO col_name;
        IF done THEN
            LEAVE main_loop;
        END IF;

        -- Perform operations on col_name

    END LOOP main_loop;
    CLOSE col_names;
END;
로그인 후 복사

이 절차에서는 my_table 테이블에서 열 이름을 검색합니다. 완료 플래그는 더 이상 열 이름을 사용할 수 없을 때 루프 종료를 제어합니다. 사용자 정의 작업을 main_loop 내에 추가하여 열 이름을 기반으로 특정 작업을 수행할 수 있습니다.

위 내용은 저장 프로시저에서 MySQL 열 이름을 동적으로 반복하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿