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자리에 함수명을 넣으면 된다