[oracle]오라클 함수(function) 생성 및 실행
저번에 프로시저에 대하여 포스팅 하였는데요.
오늘은 같은 부류?의 개념인
함수를 포스팅해보겠습니다.
저번 포스팅에서도 말씀 드렸는데 함수는 반환값이 있고! 프로시저는 반환 값이 없습니다.
그럼 기초적인 함수를 먼저 생성해 보겠습니다.
CREATE OR REPLACE FUNCTION test_func
RETURN VARCHAR
IS
v_test VARCHAR2(100);
BEGIN
v_test := 'testFunction';
RETURN v_test;
END;
진짜 뼈대 밖에 없는 구조 입니다.
test_func가 함수 이름 입니다.
함수 이름 아래 return varchar는 리턴 타입입니다.
함수 실행 결과입니다.
함수 실행문은
select
test_func()
FROM dual;
입니다.
v_test가 반환할 변수를 선언 한것입니다.
그리고 v_test에 문자를 대입시켰습니다. 오라클에서 대입하는 방식은 '='가 아니고 ':=' 라는 사실도 알아두시면 좋을 것 같습니다.
그럼 본격적으로 함수를 만들어 보겠습니다.
create or replace function fun_getdname(v_deptno varchar)
return varchar
is
v_dname varchar(100);
begin
select
dname into v_dname
from dept
where deptno=v_deptno;
return v_dname;
exception
when others then
dbms_output.put_line('exception occurred! (' || sqlcode || ') : ' || sqlerrm);
return '';
end;
dept 테이블에 서 dname을 select해서 결과를 출력하는 함수입니다.
먼저 현재 db의 상태입니다.
select
FUN_GETDNAME(50)
FROM dual;
를 실행시켜서 결과를 확인해 보겠습니다.
dept가 50인 dname을 select 해왔습니다.
그럼 이만 포스팅을 마치겠습니다.
'개발 > DB' 카테고리의 다른 글
[oracle] 프로시저(procedure) (0) | 2016.05.30 |
---|---|
[oracle]오라클 grouping, grouping_id 설명 및 예제 (0) | 2016.05.23 |
[oracle]오라클 group by, rollup (4) | 2016.05.20 |
[oracle]오라클 정규식 REGEXP_LIKE (0) | 2016.05.07 |
[oracle] 정규식 REGEXP_REPLACE 함수 (6) | 2016.05.04 |
[oracle]오라클 ibatis iterate conjunction (0) | 2016.05.01 |
[oracle]오라클 최대값의 다른 컬럼 구하기 (0) | 2016.04.25 |