[[PageOutline]] = MariaDB FOR 루프 = https://mariadb.com/kb/en/for/ MariaDB 10.3부터 지원한다. FOR를 쓰면 다음과 같이 지정한 정수의 최소값에서 최대값 범위까지 SQL문을 반복할 수 있다. {{{ create table t1 (a int); DELIMITER // BEGIN NOT ATOMIC FOR i IN 1 .. 3 DO insert into t1 values (i); END FOR; END// DELIMITER ; }}} FOR문 하나만 있다면 BEGIN NOT ATOMIC ... END를 생략해서 다음과 같이 간략하게 사용할 수도 있다. {{{ create or replace table t1 (a int); DELIMITER // FOR i IN 1 .. 3 DO insert into t1 values (i); END FOR; // DELIMITER ; }}} 반대방향으로도 가능하다. {{{ create or replace table t1 (a int); DELIMITER // FOR i IN REVERSE 4 .. 12 DO insert into t1 values (i); END FOR; // DELIMITER ; select * from t1; +------+ | a | +------+ | 12 | | 11 | | 10 | | 9 | | 8 | | 7 | | 6 | | 5 | | 4 | +------+ }}} 정수만 가능한 것은 아니다. 다음과 같이 커서도 가능하다. 커서를 미리 open할 필요는 없다. {{{ create or replace table t1 (b char(1)); insert into t1 values ('a'),('b'),('c'),('d'),('e'); DELIMITER // BEGIN NOT ATOMIC declare cur1 cursor for select * from t1; FOR c IN cur1 DO delete from t1 where b = c.b; END FOR; END// DELIMITER ; select * from t1; }}} 다음과 같이 커서를 선언하지 않고 쓰는 것이 더 편하다. {{{ create or replace table t1 (b char(1)); insert into t1 values ('a'),('b'),('c'),('d'),('e'); DELIMITER // FOR c IN (select * from t1) DO delete from t1 where b = c.b; END FOR; // DELIMITER ; select * from t1; }}} ---- [WikiStart 처음으로]