함수란?
- SP와 동일하게 데이터베이스에 저장되는 서브루틴이며 값을 리턴할 수 있음
- 함수는 SQL 문장 내에서 사용할 수 있음
- 함수의 구분
- 사용자 정의 함수(UDF, User Defined Function)
- 시스템 정의 함수(System Defined Function)
함수 정의 방법
CREATE [OR REPLACE] FUNCTION function_name (
arg1 [IN | OUT | IN OUT] data_type,
arg2 [IN | OUT | IN OUT] data_type,
...
)
< IS | AS >
local_var1 data_type;
...
RETURN data_type;
BEGIN
...
RETURN expression;
END;
함수 삭제 및 카탈로그 정보
- 함수 삭제
DROP FUNCTION function_name;
- 함수 카탈로그 정보 확인
- ALL_OBJECTS: where절 조건에 object_type = 'FUNCTION' 사용
- USER_PROCEDURES: 사용자가 정의한 프로시저 함수
- USER_SOURCE: 함수 소스 코드(컴파일 에러가 발생한 것 포함)
함수 예
CREATE OR REPLACE FUNCTION to_str(year NUMBER)
RETURN nvarchar2
IS
str nvarchar2(10);
BEGIN
CASE year
WHEN 1 THEN str := 'Fresh Man';
WHEN 2 THEN str := 'Sophomore';
WHEN 3 THEN str := 'Junior';
WHEN 4 THEN str := 'Senior';
ELSE str := '???';
END CASE;
RETURN str;
END;
/
select sno, sname, to_str(year) from student;
select sno, sname, year from student
where to_str(year) = 'Senior';
create or replace function
to_str (y number)
return nvarchar2
is
str nvarchar2(10);
begin
case y
when 1 then str := 'Fresh Man'; -- 할당연산자
when 2 then str := 'Sophomore';
when 3 then str := 'Junior';
when 4 then str := 'Senior';
else str := '???';
end case;
return str;
end;
/
select * from user_procedures where object_name = 'TO_STR';
select * from user_source;
select sno, sname, year from student
where to_str(year) = 'Senior';
'데이터베이스 Database' 카테고리의 다른 글
Chapter 6 SQL - JDBC를 이용한 자바응용프로그램 개발 (0) | 2020.11.05 |
---|---|
Chapter 6 SQL - 트리거 Trigger (0) | 2020.10.26 |
Chapter 6 SQL - 저장프로시저 Stored Procedure (0) | 2020.10.26 |
Chapter 6 SQL - View (0) | 2020.10.21 |
Chapter 5 관계 대수와 관계 해석 (0) | 2020.09.22 |