[DB/SQL] SP(Stored Procedure) 기초

songeunm·2025년 5월 14일

DB & SQL

목록 보기
12/27

🎱 SP(Stored Procedure)란?

“저장 프로시저”의 약자로, 데이터베이스에 저장해두고 반복적으로 실행할 수 있는 SQL 쿼리의 집합이다.

⚾️ 장점

  • 반복 작업을 함수처럼 미리 정의해두고 재사용 가능
  • 여러 쿼리를 미리 컴파일해서 실행 → 속도 개선
  • 애플리케이션에서 직접 SQL을 조작하지 않고 SP만 호출 → 보안성 향상

일단 들어가기에 앞서 본 글은 MySQL을 기준으로 작성되었음을 알림.

🎱 SP 기본 구조

DELIMITER //

CREATE PROCEDURE 프로시저명(
	IN 매개변수1 데이터형,
	OUT 매개변수2 데이터형,
	...
)
BEGIN
	-- 실행할 쿼리문 작성
	
	-- 변수 선언
	DECLARE 지역변수1 타입;
	
	-- SQL 로직
	SQL1;
	SQL2;
	...
END //

DELIMITER ;
  • DELIMITER

    기본 구분자인 ; 를 임시로 // 등으로 변경하여 프로시저 내부의 ; 와 구분함.
    MySQL에서 여러 줄의 쿼리를 작성할 때 사용.
    마지막에 다시 ; 로 복원 필요.

  • CREATE PROCEDURE

    프로시저 정의 시작.

  • IN

    입력값.
    호출시 값을 넘겨줌.
    읽기만 가능, 쓰기 불가능.

  • OUT

    출력값.
    결과를 외부로 전달 가능.

  • INOUT

    입출력 모두 가능한 변수.
    가독성, 협업, 명시성을 위해 IN/OUT/INOUT 구분 사용 권장.

  • BEGIN ~ END

    프로시저 내부 코드 블록.
    여러 SQL문 포함 가능.

  • DECLARE

    지역 변수 선언.
    BEGIN 블록 안에서만 사용 가능.

  • @ 변수명

    세션 전체에서 유효한 변수(세션 변수) 선언.
    BEGIN 블록 밖에서도 사용 가능.

  • SELECT ... INTO 변수명

    SELECT 결과를 변수에 담을 때 사용.
    BEGIN 블록 안에서만 사용 가능.

  • SET

    변수에 값 할당.
    일반 SQL에서도 사용 가능한 문법.

SP 호출 방법

CALL 프로시저명(매개변수1, 매개변수2, ...);
  • CALL
    프로시저를 호출.
    필요한 매개변수를 넘겨줘야 함.

🎱 SP 사용 예제

DELIMITER //

CREATE PROCEDURE HelloUser(
    IN p_name VARCHAR(50),
    OUT p_greeting VARCHAR(100)
)
BEGIN
    SET p_greeting = CONCAT('Hello, ', p_name, '!');
END //

DELIMITER ;
SET @msg = '';
CALL HelloUser("Peter Parker", @msg);
SELECT @msg;
profile
데굴데굴 구르는 개발자 지망생

0개의 댓글