Skip to content

sql Function #
Find similar titles

You are seeing an old version of the page. Go to latest version

Structured data

Category
Database

함수(Function)란? #

데이터베이스 오브젝트로 정의해서 만들어 둔 후에 필요할 때마다 호출해서 사용할 수 있도록 해둔 것. 함수는 다양한 기준으로 분류할 수 있는데, 벤더에서 제공하는 함수인 내장함수(Built-in Function)와 사용자가 정의할 수 있는 함수(User Defined Function)로 나눌 수 있다.

내장함수 #

  • 데이터베이스에서 자체 제공되는 함수로 정식명칭은 sql 함수
  • 내장함수는 SQL을 더욱 강력하게 해주고 데이터 값을 간편하게 조작하는데 사용됨.
  • 함수의 입력 값에 따라 단일행 값이 입력되는 단일행 함수(Single-Row Function)와 여러 행의 값이 입력되는 다중행 함수(Multi-Row Function)으로 나눌 수 있음.
  • 단일행 함수는 처리하는 데이터의 형식에 따라서 문자형, 숫자형, 날짜형, 변환형, NULL 관련 함수로 나눌 수 있고, 다중행 함수는 집계 함수(Aggregate Function), 그룹 함수(Group Function), 윈도우 함수(Window Function)으로 나눌 수 있음.

Oracle 내장함수의 종류 #

  1. 문자형 함수 : 문자를 입력하면 문자나 숫자 값을 반환한다.
  2. 숫자형 함수 : 숫자를 입력하면 숫자 값을 반환한다.
  3. 날짜형 함수 : DATE 타입의 값을 연산한다.
  4. 변환형 함수 : 문자, 숫자, 날짜형 값의 데이터 타입을 변환한다.
  5. NULL 관련 함수 : NULL을 처리하기 위한 함수
함수명 기능
LOWER(문자) 알파벳 문자를 소문자로 바꾸어 준다.
UPPER(문자) 알파벳 문자를 대문자로 바꾸어 준다.
Decode If .. Then .. Else을 처리
Greatest(값,값) 두 값 중 큰 것을 return
Least(값,값) 두 값 중 작은 것을 return
Sign(값) 값이 +면 1, -면 -1을, 0면 0을 return
Floor(값) 소수점 이하를 절사하여 return
Ceil(값) 소수점 이상을 절사하여 return
ascii(문자 해당 문자의 핵사 데시멀 값을 return
abs(값) 절대 값을 return
max(값) 가장 큰 값을 return
rpad(값,길이,문자) 값내의 데이터 길이가 주어진 길이 이하면 우측에 문자을 채워 고정길이을 return
lpad(값,길이,문자) 값 내의 데이터 길이가 주어진 길이 이하면 좌측에 문자을 채워 고정길이을 return
replace(값,문1,문2) 값=문1면 문2로 교체하여 return
min(값) 가장 작은 값을 return
count(값) 값의 건 수를 return
to_number(값) 값을 숫자로 변환하여 return

사용자 정의 함수 #

  • 개발자나 DBA등 오라클 사용자들이 필요에 따라 정의한 함수

Oracle 사용예제 #

    CREATE OR REPLACE function CODA4.GET_RSRCH_TASK  return TASK_TYPE_TBL pipelined

    is
        v_obj TASK_TYPE;
    begin
        for obj in

            (SELECT b.EXPC_EFFECT
                 ,b.RSRCH_CN
                 ,b.RSRCH_GOAL
                 ,b.RSRCH_TASK_ID

              FROM T_CODA_REF_TASK a
                 , T_CODA_RSRCH_TASK b
             WHERE a.REF_TASK_ID=b.REF_TASK_ID
            )
     loop
            v_obj:=TASK_TYPE(
            obj.EXPC_EFFECT
            ,obj.RSRCH_CN
            ,obj.RSRCH_GOAL
            ,obj.RSRCH_TASK_ID

            );
            pipe row(v_obj);
     end loop;
    end;
0.0.1_20210630_7_v33