JAVAIARY

사용자 정의 함수 본문

lectureNote/SQL

사용자 정의 함수

shiherlis 2023. 7. 9. 18:10

1. 사용자 정의 함수

  • 프로시저와 유사하게 SQL을 사용하여 일련의 작업을 연속적으로 처리하며, 종료 시 처리 결과를 단일값으로 반환하는 절차형 SQL
  • 데이터베이스에 저장되어 SELECT, INSERT, DELETE, UPDATE 등 DML문의 호출에 의해 실행됨
  • 예약어 RETURN을 통해 값을 반환하기 때문에 출력 파라미터가 없음
  • INSERT, DELETE, UPDATE를 통한 테이블 조작은 불가하며
    SELEC를 통한 조회만 가능
  • 프로시저를 호출하여 사용할 수 없음
  • 사용자 정의 함수는 SUM(), AVG()등의 내장 함수처럼 DML문에서 반환값을 활용하기 위한 용도로 사용됨

2. 사용자 정의 함수의 구성

  • 프로시저와 유사함
  • *값은 필수
DECLARE*
BEGIN*
	CONTROL
    SQL
    EXCEPTION
    RETURN*
END*
  • DECLARE:  사용자 정의함수의 명칭, 변수, 인수, 데이터 타입을 정의하는 선언부
  • BEGIN/END : 사용자 정의 함수의 시작과 종료를 의미
  • CONTROL: 조건문 또는 반복문이 삽입되어 순차적으로 처리
  • SQL: SELECT 문이 삽입되어 데이터 조회 작업 수행
  • EXCEPTION : BEGIN~END 안의 구문 실행 시 예외가 발생하면 이를 처리하는 방법 정의
  • RETURN : 호출 프로그램에 반환값 OR 변수 정의

3. 사용자 정의 함수 생성

CREATE (OR REPLACE) FUNCTION 사용자 정의 함수명(파라미터)
(지역변수 선언)
BEGIN
	사용자 정의 함수 BODY;
        RETURN 반환값;
END;
  • (OR REPLACE) : 동일한 이름의 함수가 존재할 때 기존의 사용자 정의 함수를 대체
  • 파라미터 
    • IN : 호출 프로그램이 사용자 정의 함수에게 값을 전달할 때 지정
    • 매개변수명 : 호출 프로그램으로부터 전달받은 값을 저장할 변수의 이름 지정
    • 자료형 : 변수의 자료형 지정
  • 사용자 정의 함수 BODY : BEGIN~END 사이에 적어도 하나의 SQL문이 존재해야 함
  • RETURN 반환값 : 반환할 값이나 반환할 값이 저장된 변수를 호출 프로그램으로 돌려줌

4. 예제

'i_성별코드'를 입력받아 1이면 '남자', 2면 '여자'를 반환하는 사용자 정의 함수를 'Get_S_성별' 이라는 이름으로 정의 하시오.

CREATE FUNCTION Get_S_성별 (i_성별코드 IN INT)
RETURN VARCHAR2
IS
BEGIN
	IF i_성별코드 == 1 THEN
    	RETURN '남자';
    ELSE IF i_성별코드 == 2 THEN
    	RETURN '여자';
    END IF;
END;

5. 사용자 정의 함수 실행

  • DML에서 속성명이나 값이 놓일 자리를 대체하여 사용
SELECT 사용자 정의 함수명 FROM 테이블명;
INSERT INTO 테이블명(속성명) VALUES(사용자 정의 함수명);
DELETE FROM 테이블명 WHERE 속성명 = 사용자 정의 함수명;
UPDATE 테이블명 SET 속성명 = 사용자 정의 함수명;

6. 사용자 정의 함수 제거

DROP FUNCTION 사용자 정의 함수명;

 

'lectureNote > SQL' 카테고리의 다른 글

PL/SQL) ORACLE 유저 생성/권한/삭제  (0) 2024.01.30
커서(Cursor)란?  (0) 2023.07.12
트리거 (TRIGGER)  (0) 2023.07.05
프로시저 (PROCEDURE) 생성, 실행 , 삭제  (0) 2023.07.05
Oracle) NVL, UNION, OUTERJOIN표현식  (1) 2023.06.04