프로시저 또한 매개변수를 받아 여러 작업을 수행하여 값을 반환할 수 있고 함수 또한 매개변수를 받아 여러 작업을 수행하여 값을 반환할 수 있지만 함수와 프로시저가 똑같은 것은 아니다.
프로시저
일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이며, 일련의 작업을 정리한 절차이다.
보통 단독으로 실행해야 할 작업을 위임받았을때 사용한다.
코드
CREATE OR REPLACE PROCEDURE 프로시저 이름 (
매개변수명1 [ IN || OUT || INOUT ] 데이터타입
, 매개변수명2 [ IN || OUT || INOUT ] 데이터타입 ...
) IS||AS 변수, 상수 등 선언 ( 선언부 )
BEGIN 실행 문장 ( 실행부 )
EXCEPTION 문장 //필수아님
END ;
호출방법
CALL 프로시저명(IN파라미터명, @OUT파라미터명)
EXECUTE 프로시저명(IN파라미터명, @OUT파라미터명)
함수
하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드의 집합.
보통 로직을 도와주는 역할이며 간단한 계산, 수치 등을 나타낼 때 사용된다.
코드
CREATE OR REPLACE FUNCTION 함수 이름
( 매개변수명1 매개변수1타입,
매개변수명2 매개변수2타입 ... )
RETURN 데이터타입
IS||AS
변수, 상수 등 선언 ( 선언부 )
BEGIN
실행 문장 ( 실행부 )
RETURN 반환값 //필수
EXCEPTION 문장 //필수아님
END ;
호출방법
SELECT 함수명(IN 파라미터명) FROM DUAL;
즉, 함수가 여러 작업을 위한 기능이라면 프로시저는 작업을 정리한 절차입니다.
매개변수
프로시저
매개변수를 입력, 출력, 입출력 형식으로 받을 수 있다.
함수
매개변수를 입력 형식으로만 받을 수 있다.
반환값
프로시저
반환값을 가질 수도 있고 가지지 않을 수도 있다.
함수
반환값을 반드시 가져야 한다.
쿼리문 내 실행가능 여부
프로시저
SELECT, WHERE 문 등에서 사용이 불가하다.
함수
SELECT, WHERE 문 등에서 사용이 가능하다.
처리장소
프로시저
클라이언트(화면)에서 값을 건네받아 서버에서 작업을 한 뒤 클라이언트에게 전달한다.
즉, 서버에서 실행이 되어 속도면에서 빠른 성능을 보여준다.
함수
클라이언트(화면)에서 값을 건네 받고 서버에서 필요한 값을 가져와서 클라이언트에서 작업을 하고 반환한다.
즉, 클라이언트(화면)에서 실행되어 프로시저보단 속도가 느리다.
'백엔드 > DBMS' 카테고리의 다른 글
[DATAGRIP] 트랜잭션 commit 수동/자동 설정 (0) | 2024.06.20 |
---|---|
[DBMS] 레디스(Redis) (0) | 2023.12.18 |