오라클 데이터베이스는 PL/SQL(Procedural Language/SQL)이라는 프로그래밍 언어를 통해 데이터베이스 작업을 자동화할 수 있는 여러 기능을 제공합니다. 그 중 하나가 바로 프로시저입니다. 이 글에서는 오라클 프로시저의 기본 개념, PL/SQL 기본 문법, 프로시저 생성 방법, 매개변수의 사용에 대해 설명하겠습니다.
1. 오라클 프로시저란?
프로시저는 특정 작업을 수행하기 위해 작성된 PL/SQL 블록입니다. 일반적으로 자주 사용하는 SQL 쿼리 및 PL/SQL 로직을 재사용 가능하게 묶어두어, 데이터베이스에서 직접 실행할 수 있습니다. 이를 통해 코드의 유지보수성을 높이고, 성능을 향상시키며, 복잡한 쿼리를 간단하게 호출할 수 있습니다.
프로시저의 장점
- 코드 재사용성: 동일한 코드를 여러 번 작성할 필요 없이 호출하여 사용할 수 있습니다.
- 성능 향상: 데이터베이스 서버에서 직접 실행되므로 클라이언트와 서버 간의 데이터 전송 비용을 줄일 수 있습니다.
- 보안: 특정 사용자에게 프로시저 실행 권한만 부여하여 데이터의 무결성을 보호할 수 있습니다.
- 유지보수 용이성: 변경이 필요한 부분을 프로시저 안에서만 수정하면 되어 코드 관리가 용이합니다.
2. PL/SQL 기본 문법
PL/SQL은 SQL을 확장한 프로그래밍 언어로, 변수 선언, 제어문, 예외 처리 등의 기능을 제공합니다. PL/SQL 블록은 다음과 같은 구조로 이루어집니다:
DECLARE
-- 변수 선언
BEGIN
-- 실행할 SQL 명령어와 PL/SQL 명령어
EXCEPTION
-- 예외 처리
END;
변수 선언
변수를 선언할 때는 DECLARE
블록 내에서 사용합니다. 예를 들어:
DECLARE
v_employee_name VARCHAR2(100);
v_employee_id NUMBER;
BEGIN
-- 변수 사용
END;
제어문
PL/SQL에서는 제어문을 사용하여 코드를 제어할 수 있습니다. 조건문은 IF
, 반복문은 LOOP
등을 이용합니다. 예를 들어:
IF v_employee_id IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE('Employee ID: ' || v_employee_id);
END IF;
예외 처리
프로시저 내에서 발생할 수 있는 오류를 처리하기 위해 EXCEPTION
블록을 사용합니다:
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('No data found.');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM);
END;
3. 프로시저 생성
프로시저를 생성하려면 CREATE PROCEDURE
구문을 사용합니다. 기본 문법은 다음과 같습니다:
CREATE OR REPLACE PROCEDURE procedure_name
IS
-- 변수 선언
BEGIN
-- 실행할 SQL 명령어와 PL/SQL 명령어
END procedure_name;
프로시저 예제
다음은 직원의 급여를 업데이트하는 간단한 프로시저 예제입니다:
CREATE OR REPLACE PROCEDURE update_employee_salary(employee_id IN NUMBER, new_salary IN NUMBER)
AS
BEGIN
UPDATE employees
SET salary = new_salary
WHERE id = employee_id;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('Error updating salary: ' || SQLERRM);
END update_employee_salary;
4. 매개변수 사용
프로시저는 매개변수를 통해 외부에서 값을 전달받을 수 있습니다. 매개변수는 IN, OUT, IN OUT으로 설정할 수 있습니다:
- IN: 기본적으로 값이 전달되며, 프로시저 내에서만 사용할 수 있습니다.
- OUT: 프로시저 내에서 계산된 결과를 호출자에게 반환할 수 있습니다.
- IN OUT: 입력값을 받고, 프로시저 내에서 값을 변경하여 호출자에게 반환할 수 있습니다.
매개변수 예제
아래는 IN OUT 매개변수를 사용하는 예제입니다:
CREATE OR REPLACE PROCEDURE adjust_salary(employee_id IN NUMBER, adjustment IN OUT NUMBER)
AS
BEGIN
UPDATE employees
SET salary = salary + adjustment
WHERE id = employee_id;
adjustment := adjustment + 1000; -- 조정된 금액 업데이트
END adjust_salary;
5. 프로시저 실행
프로시저를 실행하려면 EXECUTE
또는 CALL
명령을 사용합니다. 예를 들어:
EXECUTE update_employee_salary(101, 50000);
결론
오라클 프로시저는 PL/SQL을 사용하여 데이터베이스 내에서 복잡한 작업을 자동화하고 재사용할 수 있는 강력한 도구입니다. 이를 통해 코드의 유지보수성과 효율성을 높일 수 있습니다. 이번 글에서 다룬 프로시저의 기본 개념과 작성법, PL/SQL 문법 등을 활용하여 실제 데이터베이스 작업에 적용해 보십시오.