■ 사용자 정의 함수(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 |