728x90
프로시저 또한 매개변수를 받아 여러 작업을 수행하여 값을 반환할 수 있고 함수 또한 매개변수를 받아 여러 작업을 수행하여 값을 반환할 수 있지만 함수와 프로시저가 똑같은 것은 아니다.
프로시저
일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이며, 일련의 작업을 정리한 절차이다.
보통 단독으로 실행해야 할 작업을 위임받았을때 사용한다.
코드
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 |