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 중국어 웹사이트의 기타 관련 기사를 참조하세요!