DB(SQL)

MySQL - procedure (프로시저)

ari0930 2025. 6. 27. 00:07

procedure (프로시저)란?

자주 사용하는 SQL 로직을 재사용 가능하도록 만든 SQL 블록으로 함수처럼 호출 가능하다.

 

사용법

DELIMITER $$

CREATE PROCEDURE '프로시저명' (
    IN 파라미터명 데이터 타입,
    IN 파라미터명 데이터 타입,
    OUT 파라미터명 반환 데이터 타입
)
BEGIN
    DECLARE 변수명 VARCHAR () DEFAULT NULL;
    
    수행할 쿼리
    ...
    
END $$
DELIMITER ;

 

실제 사용예시

CREATE TABLE ssafy_user (
    id VARCHAR(50) NOT NULL PRIMARY KEY,   
    name VARCHAR(50) NOT NULL,           
    campus VARCHAR(50) NOT NULL,         
    class VARCHAR(50) NOT NULL,          
    gi VARCHAR(50) NOT NULL                       
);



DELIMITER $$
CREATE PROCEDURE proc_user_insert (
	IN p_id VARCHAR(50),
    IN p_name VARCHAR(50),
    IN p_campus VARCHAR(50),
    IN p_class VARCHAR(50),
    IN p_gi VARCHAR(50)
)
BEGIN
	INSERT INTO ssafy_user (id,name,campus,class,gi)
    VALUES (p_id,p_name, p_campus, p_class, p_gi);
END $$
DELIMITER ;

이렇게 프로시저를 만들면 아래와 같이 사용할 수 있다.

CALL proc_user_insert('SSAFY','홍길동','서울','1반','6기');

이렇게 위에 작성한 프로시저를 사용할 수 있으면 값이 테이블에 들어간다.

 

위 프로시저를 스프링부트에서 마이바티스트로 사용할 경우

<insert id="insertUserByProc" statementType="CALLABLE">
    { call proc_user_insert(#{name, mode=IN, jdbcType=VARCHAR},
                            #{campus, mode=IN, jdbcType=VARCHAR},
                            #{className, mode=IN, jdbcType=VARCHAR},
                            #{gi, mode=IN, jdbcType=INTEGER}) }
</insert>

이렇게 사용할 수 있다.

반응형

'DB(SQL)' 카테고리의 다른 글

sql 서브 쿼리,인라인 뷰,CTE  (0) 2024.05.06
SQL JOIN 사용법  (0) 2024.04.28
SQL 함수  (1) 2024.04.28
SQL 조회 SELECT 사용법  (0) 2024.04.25
MYSQL 데이터 베이스 생성 과 테이블 만들기  (0) 2024.04.21