- DB

[Oracle, MySQL, MSSQL] PROCEDURE

HalfStroage 2020. 7. 14. 18:13
반응형

테스트를 위해 더미 데이터를 생성할 일이 생겼습니다.
프러시저를 통해 데이터를 주입했는데, 고객사별로 DB가 다르다 보니
정리할 필요성을 느꼈습니다.
테이블은 임시로 USER테이블을 만들었습니다.

# MySQL 프러시저
DELIMITER $$
CREATE OR REPLACE PROCEDURE PROC_INSERT_USER
(
    IN grpId      INT(11),
    IN startCnt INT(20),
    IN cnt         INT(20)
)
BEGIN
    DECLARE i   INT DEFAULT startCnt;

    WHILE i <= cnt DO
        INSERT INTO USER (GRP_ID, USER_ID, REG_DATE,  UPT_DATE)
        VALUES                   (grpId,  CONCAT('user_id_', i), NOW(), NOW());
        SET i   = i   + 1;  
    END WHILE;
END $$
DELIMITER $$

# Oracle 프러시저
CREATE OR REPLACE PROCEDURE PROC_INSERT_USER
(
grpId      IN NUMBER,
startCnt IN NUMBER,
cnt         IN NUMBER
)
IS
  i   NUMBER := startCnt;
BEGIN
   WHILE i <= cnt LOOP
      INSERT INTO USER (GRP_ID, USER_ID, REG_DATE,  UPT_DATE)
      VALUES           (grpId,  CONCAT('user_id_', i), SYSDATE, SYSDATE);
      i   := i   + 1;   
   END LOOP;
COMMIT;
END PROC_INSERT_USER;

# MSSQL 프러시저
CREATE OR REPLACE PROCEDURE PROC_INSERT_USER
(
@grpId      INT,
@startCnt INT,
@cnt         INT
)
AS
DECLARE @i INT;
SET @i = @startCnt;

WHILE(@i <= @cnt)
BEGIN
     INSERT INTO USER (GRP_ID, USER_ID, REG_DATE,  UPT_DATE)
     VALUES                   (grpId,  CONCAT('user_id_', i), SYSDATE, SYSDATE);
     SET @i = @i + 1;
END

반응형