MySQL에서 Routine은 저장 프로시저(Stored Procedure)와 함수(Function)를 포함하는 프로그램 코드를 말한다.
--> MySQL에서 반복적으로 사용되는 쿼리나 작업을 반복 실행할 수 있도록 미리 정의해 놓은 코드
재사용성: 한 번 정의한 프로시저나 함수를 여러 번 호출하여 사용할 수 있습니다.
효율성: 복잡한 작업을 서버 측에서 처리하므로 클라이언트에서 매번 실행할 필요가 없습니다.
보안성: 중요한 로직을 데이터베이스 내부에 숨길 수 있으며, 사용자에게 필요한 권한만 부여할 수 있습니다.
구성 관리: 여러 SQL 명령을 그룹화하여 관리할 수 있습니다.
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);
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
계산, 값 반환, SELECT문 안에서 사용 → Function