Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- 프로그래밍
- 문자열
- PL/SQL
- HTML
- 함수
- String
- SQL
- java
- 오라클
- frontend
- 서블릿
- 자바
- 파이썬
- 메소드
- 웹
- 자바스크립트
- Programming
- Python
- 데이터베이스
- 프론트엔드
- function
- Servlet
- It
- jsp
- web
- JavaScript
- Database
- Method
- 코딩
- oracle
Archives
- Today
- Total
Untitled_Blue
[SQL] 함수 (Function) 본문
반응형
안녕하세요. 이번 글은 함수에 대한 설명입니다.
- 함수란?
- SQL문과 프로시저, 트리거에서 다양하게 사용가능하며 함수 안에 로직을 생성하여 사용하는 키워드
- 프로그래밍 언어에 비유하면 메서드 (Method)와 유사한 개념
- 프로시저와 다르게 IN 파라미터만 사용가능
- 반드시 최소 하나의 값은 반환해야 하며 RETURN 키워드를 사용
CREATE [OR REPLACE] FUNCTION [함수명] (
[변수명] IN [자료형],
...
[변수명] IN [자료형]
)
RETURN [자료형]
IS
[변수명] [자료형] := [값 또는 식];
BEGIN
[내부 로직];
RETURN [값 또는 식];
END;
/
함수를 구성하는 내부 로직은 상단과 같다. 첫 번째 라인에 있는 CREATE OR REPLACE [함수명]은 프로시저처럼 함수를 생성하면서 동일한 이름의 함수가 있으면 덮어쓰기처럼 대체하겠다는 키워드로 시작한다. 이후 파라미터를 지정하고 RETURN [자료형]을 통해 함수 실행 후 반환받을 값에 대한 자료형을 지정하며 BEGIN문 내부에 RETURN 옆에 반환 값 또는 식을 지정함으로써 반환 값을 설정하는 것을 끝으로 함수를 끝마치는 구조인 점을 확인할 수 있다. 삭제할 때는 DROP FUNCTION [함수명];을 사용하면 된다.
CREATE OR REPLACE FUNCTION TEST_FUNC_001 (
BRITH IN NUMBER
)
RETURN NUMBER
IS
TODAY DATE := SYSDATE;
BEGIN
RETURN ROUND(TO_NUMBER(TODAY - TO_DATE(BRITH)) / 365, 1);
END;
/
상단의 PL/SQL문은 생년월일을 입력하면 작성자의 만 나이를 계산해주는 함수이다.
DECLARE
BIRTH NUMBER;
RESULT VARCHAR2(100);
BEGIN
BIRTH := 19960518;
RESULT := TEST_FUNC_001(BIRTH);
DBMS_OUTPUT.PUT_LINE('RESULT : ' || RESULT);
END;
함수를 실행해보면 다음과 같이 내부 로직에 의거하여 결과를 출력할 수 있는 점을 확인할 수 있다.
SELECT TEST_FUNC_001(19960518) FROM DUAL;
하지만 DECLARE, BEGIN, END문을 사용해서 일일이 함수를 실행하기에는 상대적으로 번거롭다. 그래서 FROM DUAL을 통해 상단 쿼리문처럼 SQL문에서 함수를 선언해서 직접적으로 실행시킬 수도 있다. 차이점이 있다고 하면 PL/SQL문으로 실행하는 함수는 콘솔창에 결과가 출력되고 쿼리문에서 실행하는 함수는 테이블 형식으로 결과가 나오며 데이터 조회 및 처리할 때 상대적으로 다양하고 유연하게 적용시킬 수 있다는 점이 존재한다.
반응형
'Database > SQL' 카테고리의 다른 글
[SQL] 트리거 (Trigger) (0) | 2024.06.06 |
---|---|
[SQL] 프로시저 (Procedure) (0) | 2024.05.15 |
[SQL] PL/SQL (0) | 2024.05.12 |
[SQL] 제약 조건 (0) | 2024.05.06 |
[SQL] 테이블과 테이블을 연결하다. 조인 (Join) (0) | 2024.04.28 |