Post

OracleSQL 핵심정리11 - PL/SQL

PL/SQL

  • Procedural Language to SQL
  • 데이터 조작과 프로그래밍 요소를 결합해 복잡한 데이터베이스 애플리케이션과 프로그램 단위를 생성
  • 변수, 조건문, 반복문, 예외 처리 등을 지원해 효율적이고 안전한 데이터베이스 애플리케이션 작성
  • 오라클 자체에 내장되어 있는 절차적 언어로서 SQL의 제한적인 단점을 보완

PL/SQL 구조

  • 블록 구조의 언어로서 DECLARE SECTION(선언부), EXECUTABLE SECTION(실행부), EXCEPTION SECTION(예외처리부)로 나뉨
  • DECLARE(선언부) : PL/SQL에서 사용하는 모든 변수나 상수를 선언하는 부분으로 DECLARE로 시작
  • BEGIN(실행부) : 절차적 언어의 요소인 제어문, 반복문, 함수 정의 등 로직을 기술할 수 있는 부분이며 BEGIN으로 시작
  • EXCEPTION(예외처리부) : PL/SQL문이 실행되는 중에 에러 즉, 예외사항이 발생했을때 이를 해결하기 위한 문장을 기술하는 부분이며 EXCEPTION으로 시작
  • SERVEROUTPUT : 오라클에서 제공해 주는 프로시저를 사용하여 출력해주는 내용을 화면에 보여주도록 설정하는 환경변수

변수 선언과 대입문

  • DECLARE - BEGIN - END; 구조로 구성
    • ex) DECLARE 변수명 자료형; BEGIN 변수명 := 값; END;
  • 구성 요소 : DECLARE identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expression]
    • identifier - 데이터를 저장할 공간에 붙이는 이름
    • CONSTANT - 한 번 설정하면 변경할 수 없는 값
    • datatype - 변수에 저장될 데이터의 유형
    • NOT NULL - 값 반드시 포함
    • expression : Literal, 다른 변수, 연산자나 함수를 포함하는 표현식
      • 변수의 값을 지정하거나 재지정하기 위해서 := 를 사용
  • 변수의 종류
    • 스칼라 변수 : 자료형으로 NUMBER, VARCHAR2가 있음
      • ex) DECLARE employee_name VARCHAR2(50) NOT NULL := '0kim';
    • 레퍼런스 변수 : 참조 자료형으로 컬럼명에 %TYPE 을 붙여 선언. 행단위 참조는 테이블명%ROWTYPE 으로 사용
      • ex) DECLARE employee_salaryEMPLOYEES.SALARY%TYPE;
  • SELECT문
    • 데이터베이스에서 값을 가져와 변수에 저장하려면 SELECT INTO문을 사용
    • 1
      2
      3
      4
      5
      6
      
      DECLARE
          employee_name VARCHAR2(100);
      BEGIN
          SELECT first_name INTO employee_name FROM employees WHERE employee_id = 101;
          DBMS_OUTPUT.PUT_LINE('Employee Name: ' || employee_name);
      END;
      
      • DBMS_OUTPUT.PUT_LINE : 화면에 출력하는 프로시저

선택문과 반복문

  • 선택문
    • IF-THEN : 조건이 참이면 실행
    • IF-THEN-ELSE : 조건이 참이면 실행, 거짓이면 ELSE문 실행
    • IF-THEN-ELSIF-ELSE : 여러 조건을 검사하여 참이면 실행, 거짓이면 ELSE문 실행
    • 1
      2
      3
      4
      5
      6
      7
      
      IF [condtion] THEN
          [excution];
      ELSIF [condtion] THEN
          [excution];
      ELSE
          [excution];
      END IF;
      
  • 반복문 : BASIC LOOP, FOR LOOP, WHILE LOOP
    • BASIC LOOP : LOOP 실행할 문장 EXIT WHEN 조건; END LOOP;
      • 루프를 생성하며, EXIT 문을 사용해 루프를 종료
      • 1
        2
        3
        4
        
        LOOP
          [excution];
          EXIT WHEN [condtion];
        END LOOP;
        
    • FOR LOOP : FOR 변수 IN [REVERSE] 시작값..끝값 LOOP 실행할 문장 END LOOP;
      • 지정된 범위만큼 반복 실행. REVERSE 키워드를 사용하면 역순으로 반복
      • 1
        2
        3
        
        FOR 변수 IN [REVERSE] [시작값..끝값] LOOP
          [excution];
        END LOOP;
        
    • WHILE LOOP : WHILE 조건 LOOP 실행할 문장 END LOOP;
      • 주어진 조건이 참인 동안 문장을 반복 실행
      • 1
        2
        3
        
        WHILE [condtion] LOOP
          [excution];
        END LOOP;
        
This post is licensed under CC BY 4.0 by the author.