: 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
여러줄의 쿼리문을 한 번의 요청으로 실행하면 좋지 않을까?
인자 값만 바뀌고 동일한 로직의 쿼리문을 필요할 때마다 작성한다면 비효율적이지 않을까?
이럴 때 사용하는 것이 프로시져
-> 프로시져를 만들어두면, 여러 상황에서 해당 쿼리문이 필요할 때 인자 값만 전달하면 원하는 결과를 쉽게 얻음

최적화 & 캐시
프로시져의 최초 실행 시 최적화 상태로 컴파일, 그 이후 프로시져 캐시에 저장
해당 프로세스가 여러 번 사용 시, 컴파일 하지 않고 캐시에서 가져옴
유지 보수
작업이 변경될 때, 다른 작업은 건드리지 않고 프로시져 내부에서만 수정하면 됨
트래픽 감소
클라이언트가 직접 SQL문을 작성하지 않고, 프로시져명에 매개변수만 전달해주면 됨. 서버와 클라이언트간 네트워크 상 트래픽 감소
보안
프로시져 내에서 참조 중인 테이블의 접근을 막을 수 있음
호환성
구문 규칙이 SQL/PSM 표준과 호환성이 낮음. 재사용성 나쁨
성능
문자, 숫자 연산에서 C, JAVA보다 느림
디버깅
에러가 발생했을 시, 어디서 발생했는지 디버깅 힘들 수 있음