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 = '프로시저명';