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 |