함수 생성과 실행 및 삭제
함수 생성과 실행 및 삭제#
함수 생성#
함수를 생성하는 기능을 제공한다. 함수 생성시 반드시 아래 구문으로 끝나야 하며 리턴 타입이 정의되어 있어야 한다.
END;
/
생성된 함수는 sys_procedures_ 메타 테이블을 참조하여 확인할 수 있다.
다음은 UPDATE 문과 SELECT 문을 수행하는 함수 emp_func를 생성하는 예를 보여준다.
iSQL> CREATE OR REPLACE FUNCTION emp_func(f1 IN INTEGER)
RETURN NUMBER
AS
f2 NUMBER;
BEGIN
UPDATE employees SET salary = 1000000 WHERE eno = f1;
SELECT salary INTO f2 FROM employees WHERE eno = f1;
RETURN f2;
END;
/
Create success.
iSQL> SELECT * FROM system_.sys_procedures_;
USER_ID PROC_OID PROC_NAME
-------------------------------------------------------------------------------
OBJECT_TYPE STATUS PARA_NUM RETURN_DATA_TYPE RETURN_LANG_ID
--------------------------------------------------------------------------
RETURN_SIZE RETURN_PRECISION RETURN_SCALE PARSE_NO PARSE_LEN
------------------------------------------------------------------------
CREATED LAST_DDL_TIME
------------------------------
.
.
.
2 3300024 INOUTPROC1
0 0 3
2 132
15-SEP-2010 15-SEP-2010
2 3302344 EMP_FUNC
1 0 1 6 30000
23 38 0 3 209
15-SEP-2010 15-SEP-2010
36 rows selected.
함수 실행#
함수를 실행하는 기능을 제공한다. 함수를 실행함으로써 다양한 쿼리를 한꺼번에 수행할 수 있다. 실행할 함수에 파라미터가 있는 경우 반드시 함수 실행전에 파라미터 개수만큼 변수가 선언되어 있어야 한다. 또한, 함수의 실행 결과를 저장할 변수도 정의되어 있어야 한다.
다음은 emp_func를 실행하는 예를 보여준다.
iSQL> VAR eno INTEGER
iSQL> VAR ret NUMBER
iSQL> EXEC :eno := 11;
Execute success.
iSQL> EXEC :ret := emp_func(:eno);
Execute success.
iSQL> SELECT eno, salary FROM employees WHERE eno = 11;
ENO SALARY
---------------------------
11 1000000
1 row selected.
함수 삭제#
함수를 삭제하는 기능을 제공한다.
다음은 emp_func를 삭제하는 예를 보여준다.
iSQL> DROP FUNCTION emp_func;
Drop success