[PL/SQL] 프로시저 / 사용자 함수

Gabriela·2023년 7월 14일
0

[SQL] 데이터베이스

목록 보기
12/13
post-thumbnail

‣ 프로시저(Procedure)

  • 여러 쿼리문을 한 번에 수행할 수 있다.
    -"EXECUTE 프로시저명()" 형식으로 실행할 수 있다.
    (프로시저 호출) -- EXEC 최대 4글자까지 줄여서 사용 가능

형식

CREATE [OR REPLACE] PROCEDURE 프로시저명
AS            -- IS를 사용해도 무방
	변수 선언  -- 생략 가능
BEGIN
	프로시저본문
[EXCEPTION 예외처리]
END;

활용예제) 프로시저 정의, 호출

-- 서버 메시지 출력 ON
SET SERVEROUTPUT ON;


-- 프로시저 정의(프로시저 만들기)
CREATE OR REPLACE PROCEDURE MY_PROC_01 -- OR REPLACE를 같이 쓰는걸 추천 (OR REPLACE : DROP을 할 필요 없이 덮어쓰기)
AS 
    NAME VARCHAR2(20 BYTE);
BEGIN
    NAME := 'tom';
    DBMS_OUTPUT.PUT_LINE(NAME || '님 환영합니다.');
END;

-- 프로시저 호출(프로시저 실행하기)
EXECUTE MY_PROC_01();

‣ 사용자 함수(FUNCTION)

  • 함수를 사용자가 만들어서 사용할 수 있다.
  • 사용자 함수 호출은 대부분 SELECT 문에서 이루어진다.
CREATE [OR REPLACE] FUNCTION 함수명[(파라미터)]
RETURN 반환타입
AS  -- IS도 가능
	[변수 선언]
BEGIN 
	함수본문
	[RETURN 반환값]
[EXCEPTION 예외처리]
END;

활용예제) 사용자 함수 정의, 호출

-- 내장함수 ABS 분석하기
SELECT ABS(-5)
  FROM DUAL;


-- 함수명   : ABS
-- 파라미터 : -5를 저장하는 변수
-- 반환타입 : NUMBER
-- 반환값   : 파라미터의 절대값 5


-- 사용자 함수 MY_ABS 정의 
CREATE OR REPLACE FUNCTION MY_ABS(N NUMBER) 
RETURN NUMBER   -- 반환타입은 NUMBER, VARCHAR2처럼 크기 지정을 하지 않는다.
AS
    RES NUMBER;  -- 절대값 결과 저장할 변수
BEGIN
    IF N < 0 THEN
        RES := N * -1;
    ELSE
        RES := N;
    END IF;
    RETURN RES;     -- 절대값 결과를 반환
END;


-- 사용자 함수 MY_ABS 호출
SELECT MY_ABS(-5)
  FROM DUAL;

✍️오늘 내 상태..
😪하얀건 시트요.. 파랗고 까만건 쿼리라...


profile
개발이 세상에서 제일 재밌어요

0개의 댓글