Old/Procedure
03_Function
깨꾹2
2018. 10. 10. 13:07
1.함수 사용법
프로시저에는 리턴 값이 없었지만 함수에는 리턴 값을 갖을 수 있다.
CREATE OR REPLACE FUNCTION hello
RETURN VARCHAR2
IS
msg VARCHAR2(20);
BEGIN
msg:='hello world';
RETURN msg;
END;
/
VARIABLE message VARCHAR2(20);
EXEC :message := hello;
PRINT message;
hello라는 함수를 만들어서 리턴값을 message에 저장한 후 출력하는 모습이다.
사원번호를 받아서 해당 사원의 급여를 출력하기
CREATE OR REPLACE FUNCTION print_salary(empno IN employees.emp_no%TYPE)
RETURN employees.salary%TYPE
IS
return_salary employees.salary%TYPE;
BEGIN
SELECT salary INTO return_salary FROM employees e WHERE e.emp_no = empno;
RETURN return_salary;
END;
/
VARIABLE salary NUMBER;
EXEC :salary := print_salary(117);
PRINT salary;
EXEC 함수명 이 실행하는 구문인데
EXEC : salary := print_salary(117); salary는 함수명이 아니고 변수명이다. salary 앞에 : 은 저는 함수가 아니고 받아주는 변수에요 라고 알려주는 역할을 한다. 해석을 하면
EXEC 함수를 실행시켜라 : salary 저는 함수명이 아니고 받아주는 변수명이에요 := print_salary(117); 을 실행시키세요라고 할 수 있다
2.함수 검색방법
SELECT * FROM user_procedures;
프로시저와 같다. 하지만 OBJECT TYPE으로 함수인지 프로시저인지 확인 할 수 있다.
3.함수 삭제 방법
DROP FUNCTION hello;
hello자리에 함수명을 넣으면 된다