개발 공부중

[ORACLE] FUNCTION/PROCEDURE 차이점과 사용방법 본문

ORACLE

[ORACLE] FUNCTION/PROCEDURE 차이점과 사용방법

개발자 leelee 2023. 11. 30. 23:07

FUNCTION 과 PROCEDURE의 차이점

여기서 FUNCTION 과 PROCEDURE의 차이점은 목적과 반환 값 처리 방식에 있다.

 

FUNCTION의 목적은 값을 반환하는 것이다.

어떤 계산을 수행하고 그 결과를 RETURN 키워드를 사용하여 값을 반환한다.
예를 들어, 두 숫자를 더하고 결과를 반환하는 함수를 생각할 수 있다.

-- 두 숫자를 더한 값을 return 해주는 function
CREATE OR REPLACE FUNCTION add_numbers(
    p_num1 NUMBER,
    p_num2 NUMBER
) RETURN NUMBER
IS
    result NUMBER;
BEGIN
    result := p_num1 + p_num2;
    RETURN result;
END add_numbers;

 

 

PROCEDURE는 값을 반환하지 않고, 어떤 일련의 작업을 수행하거나 프로시저 내에서 데이터를 조작하는 데 사용된다. 
예를 들어, 데이터베이스에 새로운 레코드를 삽입하는 프로시저를 만들 수 있다.

-- 특정 부서의 직원 목록을 조회하는 PROCEDURE
CREATE OR REPLACE PROCEDURE get_department_employees(
    p_department_id NUMBER
)
IS
BEGIN
    -- 특정 부서의 직원을 조회하는 쿼리
    FOR employee_rec IN (SELECT employee_id, employee_name FROM employees WHERE department_id = p_department_id)
    LOOP
        -- 조회된 각 직원 정보 출력
        DBMS_OUTPUT.PUT_LINE('직원 ID: ' || employee_rec.employee_id || ', 이름: ' || employee_rec.employee_name);
    END LOOP;
END get_department_employees;
/

 


디비버에서 FUNCTION / PROCEDURE 만드는 방법

1. 아래처럼 마우스 우클릭 -> create 해주면 된다.

2. 이름과 type을 정하고 확인

3. Declaration 에서 함수를 만들고 저장해준다.

 

4. 스크립트문에서 함수를 사용한다.

-- 함수 호출
DECLARE
    total_result NUMBER;
BEGIN
    -- 함수 호출 및 결과 출력
    total_result := add_numbers(10, 20);  --할당 연산자로, 변수에 오른쪽 표현식의 값을 할당
    DBMS_OUTPUT.PUT_LINE('두 숫자의 합계: ' || total_result);
END;

실행결과 화면

 


FUNCTION / PROCEDURE 조회방법

SELECT * FROM DBA_SOURCE
WHERE TYPE = 'FUNCTION'
AND NAME = '함수명';
SELECT * FROM DBA_SOURCE
WHERE TYPE = 'PROCEDURE';
AND NAME = '프로시저명';

 

 

실행화면

 

Comments