Procedure란?
DB에 관련 된 일련의 작업을 정리한 절차를 관계형 데이터베이스 관리 시스템에 저장한 것으로 일련의 쿼리를 하나의 함수처럼 실행하기 위한 쿼리의 집합이다.보통 단독으로 실행 되어야 할 작업을 위임 받았을 때 사용한다.
**Procedure 생성 구문**
CREATE PROCEDURE [프로시저명]([파라미터])
AS
BEGIN
[쿼리문]
END
ex) - Reservation테이블에 프로시저 생성해서 예약자, 날짜 insert 하기
CREATE PROCEDURE 'PRO_Rsrvt' ( //프로시저 생성
PARAM_NAME VARCHAR(50) -- 파라미터를 선언함,(이름)
PARAM_DATE VARCHAR(50) (날짜)
)
BEGIN
INSERT INTO Reservation(NAME,DATE) VALUES(PARAM_NAME,PARAM_DATE);
END
CALL PRO_Rsrvt('홍길동','1225'); -- 프로시저명(파라미터) 실행
SELECT NAME,DATE FROM Reservation -- 프로시저로 insert된 내용 조회
Function이란?
하나의 목적 작업을 수행하기 위해 독립적으로 설계된 코드의 집합으로
로직을 도와주는 역할을 하며 간단한 계산이나 수치등을 나타낼 때 사용하며 리턴값을 반드시 가져야 한다는 특징이 있다.
ex) 프로시저에서 중복되는 로직이 발생하거나 자주 사용하는 로직을 모듈화하고 싶을 때 function으로 만들어 현재 업무를 서프트 해주는 목적으로 사용
| 차이 | Procedure | Function |
|---|---|---|
| 리턴값 | 가질 수도 있고 안 가질 수도 있다. | 반드시 가져야 된다. |
| 리턴값 | 여러개의 리턴값을 가질 수 있다. | 하나의 리턴값만 가져야 된다. |
| 매개변수 | 입력,출력,입출력 형식으로 받을 수 있다. | 입력 형식으로만 받을 수 있다 |
| 처리 장소 | 클라이언트(화면)에서 값을 건네 받아 서버에서 작업(속도가 빠르다) | 클라이언트에서 값을 전달 받고 서버에서 필요한 값을 가져와서 클라이언트에서 작업 후 반환(속도가 느림) |
🙇 참고 사이트 🙇 https://velog.io/@piczo/ORACLE-%ED%95%A8%EC%88%98%EC%99%80-%ED%94%84%EB%A1%9C%EC%8B%9C%EC%A0%80%EC%9D%98-%EC%B0%A8%EC%9D%B4 https://seohee-ha.tistory.com/125 https://wakestand.tistory.com/518