본문 바로가기
IT

MariaDB(Mysql) 프로시저 사용하기 - 예제

by geddy 2024. 1. 24.

오늘은 MariaDB를 테스트를 할 일이 생겼습니다. 그런데, 데이터를 삽입하려고 하니 한 번에 쉽게 넣을 수 있는 방법이 필요해서 Procedure를 이용해서 데이터를 삽입하고 테스트해 보았습니다. 

 

MariaDB(Mysql) 프로시저 사용하기 - 예제 썸네일

Procedure를 이용한 데이터 삽입

MySQL에서 프로시저를 생성할 때는 `DELIMITER`를 사용하여 명령문의 끝을 표시해야 합니다. 이는 MySQL이 세미콜론(;)을 명령문의 끝으로 인식하기 때문입니다. 따라서 세미콜론이 포함된 프로시저를 생성할 때는 다른 구분자를 사용해야 합니다.

아래와 같은 구문을 통해서 mysql 또는 mariadb에 프로시저를 생성할 수 있습니다. 

프로시저 생성 구문 예

DELIMITER //
CREATE PROCEDURE PROC1()
BEGIN
  DECLARE i INT DEFAULT 1;
  WHILE i <> 10000 DO
    INSERT INTO T1 VALUES(i);
    SET i = i + 1;
  END WHILE;
END//
DELIMITER ;


프로시저 생성 결과

MariaDB [tpcc]> DELIMITER //
MariaDB [tpcc]> CREATE PROCEDURE PROC1()
    -> BEGIN
    ->   DECLARE i INT DEFAULT 1;
    ->   WHILE i <> 10000 DO
    ->     INSERT INTO T1 VALUES(i);
    ->     SET i = i + 1;
    ->   END WHILE;
    -> END//
Query OK, 0 rows affected (0.005 sec)

MariaDB [tpcc]> DELIMITER ;

MOD를 사용하여 프로시저 내에서 주기적으로 commit 하기

트랜잭션을 테스트하려고 몇 건 넣고 commit을 하는 프로시저를 만들려고 하는데, 찾아보니 MOD라는 함수를 이용해야합니다. 

다음은 SQL 프로시저에서 변수 i를 나눈 나머지가 0일 때 COMMIT을 호출하는 코드 예제입니다:

BEGIN
  DECLARE i INT;
  -- i 변수에 값을 할당합니다.
  SET i = 10;

  -- i를 나눈 나머지가 0인지 확인합니다.
  IF MOD(i, 2) = 0 THEN
    -- COMMIT을 호출합니다.
    COMMIT;
  END IF;
END;

 

이 코드는 i의 값이 짝수일 때 COMMIT을 호출합니다. i의 값을 적절하게 설정하거나, MOD 함수의 두 번째 인자를 원하는 나눗셈 값으로 변경하여 사용할 수 있습니다. 이 코드는 MySQL에서 작동합니다. 다른 SQL 데이터베이스에서는 약간의 수정이 필요할 수 있습니다. 

 

facebook twitter kakaoTalk kakaostory naver band shareLink