본문 바로가기

Database/Oracle

오라클 사용자 정의 함수(FUNCTION)

■ 사용자 정의 함수(FUNCTION)

 스토어드 함수는 시스템 함수처럼 쿼리에서 호출하거나 저장 프로시저처럼 EXECUTE 문을 통해 실행할 수 있다.


 

 

*******************************************************************

- 형식(인수나 RETURN 에서는 자료형의 크기를 명시하지 않는다.)

CREATE [OR REPLACE] FUNCTION 함수이름
[(
   매개변수1 IN 자료형,
   매개변수2 IN 자료형;
)]
RETURN datatype;
IS
   [변수의 선언]
BEGIN
   .............
    RETURN (값);
   [EXCEPTION]
   .............
END;
/

*******************************************************************

 

- 함수 목록 확인

SELECT object_name FROM user_procedures;

 

 

-함수 실행

EXECUTE 함수명(인수)

CALL 함수명(인수)

 

 

 

 

 

 

 

 

 

ex)

-1부터 n까지의 합

 

CREATE OR REPLACE FUNCTION fnSum
(
    n IN NUMBER
)
RETURN NUMBER   -- 인수나 RETURN 에서는 자료형의 크기를 명시하지 않는다.
IS
  s NUMBER := 0;
BEGIN
    FOR i IN 1..n LOOP
        s := s + i;
    END LOOP;
    RETURN (s);
END;
/

 

-- 결과 확인
SELECT fnSUM(100) FROM DUAL;

 

-- EXEC 로 실행
sql>VARIABLE result NUMBER;
sql>EXEC :result := fnSUM(100);
sql>PRINT :result

 

-- CALL 로 실행
sql>VARIABLE result NUMBER;
sql>CALL fnSUM(10) INTO :result;
sql>PRINT :result

 

 

 

 

 

-주민번호가지고 성별 구하기

 

CREATE OR REPLACE FUNCTION fnsex

(

ssn IN VARCHAR2

)

 

RETURN VARCHAR2

 

IS

s VARCHAR2(6) := '여자';

 

BEGIN

IF MOD(SUBSTR(ssn,8,1),2)=1 THEN

s := '남자';

 

END IF;

 

RETURN s;

 

END;

 

실행

select name, fnsex(ssn) from insa;

 

 

 

 

 

 

 

 

 

 

'Database > Oracle' 카테고리의 다른 글

오라클 트리거(TRIGGER)  (0) 2014.11.21
오라클 커서와 동적SQL  (0) 2014.11.21
오라클 프로시져(PROCEDURE)  (0) 2014.11.21
오라클 PL/SQL(Procedural Language extensions to SQL)  (0) 2014.11.14
오라클 형식 정리본  (0) 2014.11.14