본문 바로가기

- DB

[Oracle, MySQL, MSSQL] PROCEDURE

반응형

테스트를 위해 더미 데이터를 생성할 일이 생겼습니다.
프러시저를 통해 데이터를 주입했는데, 고객사별로 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

반응형

'- DB' 카테고리의 다른 글

[Oracle] ORA-00001: 무경설 제약 조건(PK)에 위배  (0) 2020.10.22
[MySQL, Maria] 계정 생성 및 권한 부여  (0) 2020.08.23
[MySQL] int(11), ZEROFILL  (0) 2020.07.14
[MyBatis] #, $ 차이  (0) 2020.06.23
[MySQL] Incorrect string value  (0) 2020.06.15