일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 다이나믹 프로그래밍
- 타입 객체
- 파일시스템 구현
- 프로그래머스
- 자료구조
- 백준
- DirectX12
- 렌더링 파이프라인
- I/O장치
- Direct12
- 쓰레드
- codility
- 멀티프로세서
- 그리디알고리즘
- DirectX 12
- 멀티쓰레드
- 운영체제
- 컨디션 변수
- 알고리즘
- 병행성 관련 오류
- OS
- 락
- 동적계획법
- 영속성
- directx
- 병행성
- 디자인패턴
- 다이나믹프로그래밍
- 그리디 알고리즘
- 스케줄링
Archives
- Today
- Total
기록공간
OracleSQL - PL/SQL 함수(FUNCTION) 본문
반응형
PL/SQL 함수란 하나 이상의 PL/SQL 문으로 구성된 서브루틴으로 코드를 다시 사용할 수 있도록 캡슐화 하는데 사용된다. 오라클에서는 오라클에 정의된 기본 제공 함수를 사용하거나 직접 스토어드(Stored) 함수를 만들 수 있다. (-> 사용자 정의 함수) 이 사용자 정의 함수는 시스템 함수처럼 쿼리에서 호출하거나 저장 프로시저처럼 EXECUTE 문을 통해 실행 할 수 있다.
기본 형식은 다음과 같다.
CREATE [OR REPLACE] FUNCTION 함수명
[ ( 매개변수명1 자료형
, 매개변수명2 자료형
) ]
RETURN 데이터타입
IS
-- 주요 변수 선언
BEGIN
-- 실행문;
...
RETURN 값;
[EXCEPTION]
-- 예외 처리 구문;
END;
사용자 정의 함수는 IN 파라미터(입력 매개변수)만 사용할 수 있으며 반드시 반환될 값의 데이터 타입을 RETURN 문에 선언해야 한다. 그리고 FUNCTION은 반드시 단일 값만 반환한다.
이제 사용자 정의 함수를 사용하는 예를 들어 보겠다. 주민등록번호만 가져와 사원의 성별을 확인하는 FN_GENDER() 함수를 만드려고 한다. 그렇다면 함수는 다음과 같이 정의, 사용하면 된다.
-- 함수 정의
CREATE OR REPLACE FUNCTION FN_GENDER( V_SSN VARCHAR2 ) -- 매개변수 : 자릿수(길이) 지정 안함
RETURN VARCHAR2 -- 반환자료형 : 자릿수(길이) 지정 안함
IS
-- 선언부 -> 주요 변수 선언
V_RESULT VARCHAR2(20);
BEGIN
-- 실행부 -> 연산 및 처리
IF ( SUBSTR(V_SSN, 8, 1) IN ('1', '3') )
THEN V_RESULT = '남자';
ELSIF ( SUBSTR(V_SSN, 8, 1) IN ('2', '4') )
THEN V_RESULT = '여자';
ELSE
V_RESULT = '성별확인불가';
END IF;
RETURN V_RESULT;
END;
--==>> Function FN_GENDER이(가) 컴파일되었습니다.
-- 함수 사용
SELECT FN_GENDER('771212-1234567')
FROM DUAL;
--==>> 남자
주의할 점이 있다면 함수는 특정 테이블에 의존적인 객체가 아니기 때문에 함수 내부에서 특정 테이블에 대한 선언이나 연산을 하는 것은 바람직 하지 않다.
반응형
'DataBase > Oracle' 카테고리의 다른 글
OracleSQL - PL/SQL 커서(CURSOR) (0) | 2020.10.24 |
---|---|
OracleSQL - PL/SQL 프로시저(Procedure) (0) | 2020.10.24 |
OracleSQL - PL/SQL (0) | 2020.10.18 |
OracleSQL - 뷰(VIEW) (0) | 2020.10.18 |
OracleSQL - 무결성 제약조건(Constraint) (0) | 2020.10.18 |
Comments