[oracle]오라클 함수(function) 생성 및 실행 :: 개발/일상_Mr.lee

[oracle]오라클 함수(function) 생성 및 실행

Posted by Mr.mandu.
2016. 5. 18. 10:20 개발/DB

저번에 프로시저에 대하여 포스팅 하였는데요.


오늘은 같은 부류?의 개념인


함수를 포스팅해보겠습니다.


저번 포스팅에서도 말씀 드렸는데 함수는 반환값이 있고! 프로시저는 반환 값이 없습니다.


그럼 기초적인 함수를 먼저 생성해 보겠습니다.



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 해왔습니다.

그럼 이만 포스팅을 마치겠습니다.