(2)PL/SQL 사용자 정의 함수
PL/SQL의 사용자 정의 함수 사용법
시작하기 전에
사용 교재 : 오라클SQL과 PL/SQL을 다루는 기술 (https://thebook.io/006696/)
예제 코드 : https://github.com/gilbutITbook/006696
SERVEROUTPUT 설정
PL/SQL 결과물을 보기 위해 아래의 실행문을 실행
SET SERVEROUTPUT ON;
PL/SQL 사용자 정의 함수
저장블록 - 컴파일을 거쳐 데이터베이스 내에 저장되어 재사용이 가능하다.
다른 프로그래밍 언어의 사용자 정의 함수처럼 사용 가능.
사용자 정의 함수 기본 구조
CREATE [OR REPLACE] FUNCTION 함수이름 (변수1, 변수2, ---)
RETURN 데이터타입;
IS[AS]
-- 변수, 상수 등 선언
BEGIN
-- 실행부
RETURN --반환값;
--[EXCEPTION - 예외처리]
END --[함수이름];
/
- []는 생략 가능
사용자 정의 함수 호출법
-- 매개변수가 없는 함수
함수명
함수명()
-- 매개변수가 있는 함수
함수명(매개변수1, ...... , 매개변수n)
사용자 정의 함수 예제
- 예제
- 나머지를 반환하는 함수
CREATE OR REPLACE FUNCTION my_mod(num1 NUMBER, num2 NUMBER) RETURN NUMBER -- 반환 데이터 타입 지정 IS -- 변수 선언 vn_remainder NUMBER := 0; -- 반환할 나머지 vn_quotient NUMBER :=0; -- 몫 BEGIN -- 수식 작성 vn_quotient := FLOOR(num1/num2); -- 몫 구하기 vn_remainder := num1-(num2 * vn_quotient); -- 나머지 구하기 RETURN vn_remainder; END; /
- 예제2
- 국가명을 반환하는 함수
- null 처리 로직을 추가
- 국가명을 반환하는 함수
CREATE OR REPLACE FUNCTION fn_get_country_name(p_country_id NUMBER)
RETURN VARCHAR2
IS
vs_country_name countries.country_name%TYPE;
vn_count NUMBER := 0;
BEGIN
SELECT count(*)
INTO vn_count
FROM countries
WHERE country_id = p_country_id;
IF vn_count = 0 THEN
vs_country_name := '국가없음';
ELSE
SELECT country_name
INTO vs_country_name
FROM countries
WHERE country_id = p_country_id;
END IF;
RETURN vs_country_name;
END;
/
Leave a comment