MySql - Routine

JiMin LEE·2025년 5월 5일
0

TIL

목록 보기
5/9
post-thumbnail

Routine 이란?

MySQL에서 Routine은 저장 프로시저(Stored Procedure)와 함수(Function)를 포함하는 프로그램 코드를 말한다.
--> MySQL에서 반복적으로 사용되는 쿼리나 작업을 반복 실행할 수 있도록 미리 정의해 놓은 코드

Routine을 사용하는 이유

  1. 재사용성: 한 번 정의한 프로시저나 함수를 여러 번 호출하여 사용할 수 있습니다.

  2. 효율성: 복잡한 작업을 서버 측에서 처리하므로 클라이언트에서 매번 실행할 필요가 없습니다.

  3. 보안성: 중요한 로직을 데이터베이스 내부에 숨길 수 있으며, 사용자에게 필요한 권한만 부여할 수 있습니다.

  4. 구성 관리: 여러 SQL 명령을 그룹화하여 관리할 수 있습니다.



Stored Procedure

MySQL 서버에 저장된 SQL 코드로, 특정 작업을 수행하는 데 필요한 여러 SQL 문을 그룹화하여 하나의 이름으로 실행할 수 있도록 만든 프로그램
일반적으로 반복적인 작업이나 복잡한 로직을 처리할 때 사용한다.

DELIMITER $$

CREATE PROCEDURE GetEmployeeDetails(IN emp_id INT)
BEGIN
    SELECT name, department, salary
    FROM employees
    WHERE id = emp_id;
END $$

DELIMITER ;

DELIMITER $$

  • 원래는 종료를 나타내는 문자로 ;를 사용하지만, DELIMITER를 선언하면 뒤에 나오는 문자를 종료를 나타내는 문자로 사용하겠다는 의미이다.

CREATE PROCEDURE GetEmployeeDetails(IN emp_id INT)

-> input으로 Int 타입의 emp_id를 받는다.


Stored Procedure 실행하는 법

CALL GetEmployeeDetails(101);



Function

MySQL에서 함수는 특정 작업을 수행하고 결과를 반환하는 코드
함수는 보통 데이터를 처리하거나 계산한 후, 그 결과를 반환하는 데 사용된다.
함수는 SELECT 문 안에서 호출할 수 있다.

DELIMITER $$

CREATE FUNCTION GetEmployeeSalary(emp_id INT) RETURNS DECIMAL(10, 2)
BEGIN
    DECLARE salary DECIMAL(10, 2);
    
    SELECT salary INTO salary
    FROM employees
    WHERE id = emp_id;
    
    RETURN salary;
END $$

DELIMITER ;
CREATE FUNCTION GetEmployeeSalary(emp_id INT) RETURNS DECIMAL(10, 2)

-> input으로 Int 타입의 emp_id를 받고,
전체 자릿수를 10자리로 하되, 그 중 소수점 이하를 2자리로 하는 값을 리턴한다.



❗️Stored Procedure 와 Function 의 차이

🔍 최종정리

절차적인 작업, 데이터 조작, 복잡한 흐름 → Stored Procedure
계산, 값 반환, SELECT문 안에서 사용 → Function

참고

0개의 댓글