0. 기본 구조
CREATE OR REPLACE FUNCTION 함수명(바인드 변수)
RETURN 반환타입
IS
변수 선언
BEGIN
RETURN 반환 변수명;
END;
1. 사원 번호를 입력받아 사원명을 출력하는 함수
CREATE OR REPLACE FUNCTION FN_EMPNAME(P_EMP_NUM IN VARCHAR2)
RETURN VARCHAR2
IS
R_NM EMP.EMP_NM%TYPE;
BEGIN
SELECT EMP_NM
INTO R_NM
FROM EMP
WHERE EMP_NUM = P_EMP_NUM;
DBMS_OUTPUT.PUT_LINE('R_NM : ' || R_NM);
RETURN R_NM;
END;
* 사용자 정의 함수의 변수
| SCALAR | 함수 내부에서 사용하기 위한 변수 INTO 키워드를 사용해 SELECT 문의 결과를 담는데 사용 |
| BIND | 값을 외부에서 받아오는 변수 자바의 메서드 파라미터와 같은 역할 |
| COMPOSITE | 배열 형태의 변수 |
| REFERENCE | 변수의 타입을 테이블의 컬럼에서 가져오는 방식 '변수명 테이블명.컬럼명%TYPE' 형태로 선언 |
* 실행
SELECT FN_EMPNAME('EMP002')
FROM DUAL;
2. 두 수의 합을 구해주는 함수
CREATE OR REPLACE FUNCTION FN_SUM (P_ANUM IN NUMBER, P_BNUM IN NUMBER)
RETURN NUMBER
IS
SUMRESULT NUMBER := 0;
BEGIN
SELECT (P_ANUM + P_BNUM)
INTO SUMRESULT
FROM DUAL;
RETURN SUMRESULT;
END;
* NUMBER 타입
NUMBER 타입은 변수로 선언할 때 반드시 0으로 초기화해줘야한다. 대입 연산자는 ':=' 를 사용한다.
* DBMS_OUTPUT.PUT_LINE 을 스크립트 출력창에 출력하기
SET SERVEROUTPUT ON;
'데이터베이스 > Oracle' 카테고리의 다른 글
| [PL/SQL] 반복문 (Loop) (0) | 2023.06.14 |
|---|---|
| [PL/SQL] 커서(Cursor) (0) | 2023.06.14 |
| [OracleDB] TIMESTAMP로 데이터 복구하기 (0) | 2023.06.13 |
| [OracleDB] 윈도우(Window) 함수 (0) | 2023.06.12 |
| [PL/SQL] 패키지 (PACKAGE) (0) | 2023.02.15 |