DataBase > Oracle/Tibero

[oracle] 대량 샘플데이터 만들기 (FOR, LOOP, WHILE)

#오라클#tibero#sample#test#data #db#database#배치#batch

테스트를 위한 대량의 테스트 데이터 만들기

SET serveroutput ON;
BEGIN
    FOR i in 101..25498 LOOP

          insert into my_user ( user_id, auth_cd, allow_dt, cyber_yn) values ( 'user'||i,'D00', to_date('2021/01/01','YYYY/MM/DD'), 'Y');

    END LOOP;

END;

반복문의 조건

1) FOR 문

FOR {변수} IN [REVERSE] {시작}..{종료}
LOOP
    {실행문};
END LOOP;

2) LOOP 문

LOOP
    {실행문};
EXIT {조건};
END LOOP;

   ※ SAMPLE

DECLARE
CNT NUMBER :=1;
BEGIN
    LOOP
    DBMS_OUTPUT.PUT_LINE(CNT);
    CNT := CNT+1;
    EXIT WHEN CNT >10;
    END LOOP;
END;

3) WHILE 문

WHILE {조건}
LOOP
    {실행문};
END LOOP;

   ※ SAMPLE

DECLARE
CNT NUMBER :=1;

BEGIN
    WHILE(CNT<10)
    LOOP
    DBMS_OUTPUT.PUT_LINE(CNT);
    CNT := CNT+1;
    END LOOP;
END;

 

MySQL, MariaDB 에서는 프로시저를 만들어 실행한다.

DELIMITER $$
DROP PROCEDURE IF EXISTS test$$
create procedure test()
BEGIN
  DECLARE val INT DEFAULT 300;
     WHILE val < 1200 DO
          insert into pm_user (user_id, user_nm,pwd,auth_cd,email,mobile,cre_id,upd_id,upd_dt) values(concat('user',val),'시스템관리자','9999','ATSYS','a@a.com','010-1234-5678','emunhi','emunhi',now());
          SET val = val + 1;
    END WHILE;
END $$
DELIMITER ;

call test;