Etc

[MySQL] 프로시저

sssbin 2023. 12. 30. 19:02

저장 프로시저(Stored Procedure)란?

일련의 SQL문장을 선언해서 MySQL에 저장하고, 해당 SQL문을 함수처럼 사용하는것으로 만들어 두기만 하면 함수처럼 호출하여 편하게 사용할 수 있다.

  • 장점
    • 하나의 프로시저로 여러 SQL문의 실행이 가능하다. (모듈화)
    • 호스팅 언어와 SQL문이 분리되어 보수가 용이하다.
    • 네트워크 소요 시간을 줄일 수 있다. (구문 분석 및 코드 변환을 미리 진행하여 처리 시간이 단축됨)
  • 단점
    • 재사용성이 낮다. (DB 버전 별 구문 규칙과 호환성이 다름)
    • 처리 성능이 좋지않다. (MySQL 스토어드의 프로그램 처리 성능이 낮다)

실습

1. 테이블 생성

2. 프로시저 생성

delimiter $$
create procedure 이름 (매개변수)
begin
    # SQL문
end $$
delimiter ;

💡 프로시저 내부에 세미콜론이 많을 경우, SQL문이 나눠져 서버로 보내지게 되어 프로시저가 어디까지인지 모른다.
따라서 DELIMITER $$를 선언하고, 프로시저 작성이 끝날 경우 END $$로 프로시저의 끝을 알려야 한다. END $$로 끝나는 부분을 표시하고, 마지막에 DELIMITER를 세미콜론으로 바꿔준다.

3. 프로시저 호출

call 프로시저이름 (매개변수);

4. 입력된 데이터 select 화면