PLSQL(Procedural Language)

Soozoo·2024년 7월 10일

데이터베이스(DB)

목록 보기
14/19

PL/SQL의 주요 개념

  1. 블록 구조:
    • PL/SQL 프로그램은 기본적으로 블록 구조로 구성됩니다. 각 블록은 선언부, 실행부, 예외 처리부로 구성됩니다.
  2. 변수 및 상수:
    • PL/SQL에서 변수를 선언하고 사용할 수 있으며, 상수를 통해 변하지 않는 값을 저장할 수 있습니다.
  3. 조건문과 반복문:
    • IF, CASE와 같은 조건문과 LOOP, FOR LOOP, WHILE LOOP와 같은 반복문을 사용할 수 있습니다.
  4. 프로시저 및 함수:
    • PL/SQL에서는 프로시저와 함수를 사용하여 재사용 가능한 코드 블록을 정의할 수 있습니다. 프로시저는 특정 작업을 수행하고, 함수는 값을 반환합니다.
  5. 패키지:
    • 관련된 프로시저, 함수, 변수 등을 그룹화하여 패키지로 관리할 수 있습니다. 패키지를 사용하면 코드의 재사용성과 관리 효율성이 높아집니다.
  6. 트리거:
    • 특정 이벤트가 발생할 때 자동으로 실행되는 코드를 정의할 수 있습니다. 예를 들어, 데이터베이스 테이블에 데이터가 삽입되거나 업데이트될 때 트리거가 실행될 수 있습니다.

PL/SQL 블록 구조

PL/SQL 블록의 기본 구조는 다음과 같습니다:

DECLARE
    -- 선언부: 변수, 상수, 커서 등을 선언
BEGIN
    -- 실행부: 실제 작업을 수행
EXCEPTION
    -- 예외 처리부: 에러를 처리
END;

간단한 출력

BEGIN
    DBMS_OUTPUT.PUT_LINE('김연아'); -- '김연아' 출력
END;

변수 선언 및 출력

DECLARE
    name VARCHAR2(20) := '세종대왕';
BEGIN
    DBMS_OUTPUT.PUT_LINE('당신의 이름은 ' || name);
END;

SELECT문을 사용한 변수 초기화 및 출력

DECLARE
    e_name emp.ename%TYPE; -- emp 테이블의 ename 컬럼 타입
    e_sal emp.sal%TYPE; -- emp 테이블의 sal 컬럼 타입
BEGIN
    SELECT sal, ename INTO e_sal, e_name
    FROM emp
    WHERE empno = 7788;

    DBMS_OUTPUT.PUT_LINE('7788님의 이름은 ' || e_name || ' 급여는 ' || e_sal);
END;

ROWTYPE을 사용한 레코드 변수 선언 및 출력

DECLARE
    data emp%ROWTYPE; -- emp 테이블의 행 타입
BEGIN
    SELECT * INTO data
    FROM emp
    WHERE empno = 7788;

    DBMS_OUTPUT.PUT_LINE('7788님의 이름은 ' || data.ename || ' 직업은 ' || data.job || ' 해당 매니저는 ' || data.mgr || ' 급여는 ' || data.sal);
END;

IF 조건문 사용 예제

DECLARE
    num1 NUMBER := 3;
    num2 NUMBER := 5;
BEGIN
    IF num1 > num2 THEN
        DBMS_OUTPUT.PUT_LINE(num1 || '이 큽니다');
    ELSE
        DBMS_OUTPUT.PUT_LINE(num2 || '이 큽니다');
    END IF;
END;

복잡한 IF 조건문 사용 예제

DECLARE
    n_sales NUMBER;
    n_commission NUMBER(10,2) := 0;
BEGIN
    n_sales := &n_sales; -- 사용자 입력 받기

    IF n_sales < 200 THEN
        n_commission := n_sales * 0.1;
    ELSIF n_sales >= 200 AND n_sales < 500 THEN
        n_commission := n_sales * 0.05;
    ELSIF n_sales >= 500 AND n_sales < 1000 THEN
        n_commission := n_sales * 0.03;
    ELSE
        n_commission := n_sales * 0.02;
    END IF;

    DBMS_OUTPUT.PUT_LINE(n_sales || ', ' || n_commission);
END;

여러 개의 DBMS_OUTPUT.PUT_LINE 사용 예제

BEGIN
    DBMS_OUTPUT.PUT_LINE('Oracle 시험 잘보세요');
    DBMS_OUTPUT.PUT_LINE('Okim');
    DBMS_OUTPUT.PUT_LINE('O33333');
END;
profile
넙-죽

0개의 댓글