기본 콘텐츠로 건너뛰기

[DB][Oracle] PL/SQL 개념정리


Oracle이 자체 DBMS를 위해 표준 SQL을 확장해서 개발한 쿼리용 프로그램 언어로 절차적인 언어(Procedural Language)이다.


  • - PL/SQL : Procedural Language extention to SQL
  • - PL/SQL 프로그램의 종류 > 1. Procedure, 2. Function, 3. Trigger
  • - 장점 : 프로그래밍 언어처럼 "예외처리"가 가능하며, 디버깅 기능을 제공
  • - 기본 구조로 '블럭'단위로 실행된다.  블럭은 'BEGIN'로 시작해서 'END'로 끝남.
  • - IF문, Loop문 사용가능
  • 주석기능, 단이행은 "-- 내용",  긴 문장은 " /*  ~  */ " 사용한다
  • PUT_LINE()  프로시저로 화면출력을 지원한다 
    ex) DBMS_OUTPUT.PUT_LINE('Hellow World~');
[PL/SQL] 구조

- DECLARE  (선언 : 변수/상수(Construct)/커서 선언)
- BEGIN  (실행 : SQL문, 제어문, 반복문, 함수 등 제어 로직구현)
- EXCEPTION  (예외 처리)
- END (종료 구분  반드시 ";"으로 끝을 알려야함)

[PL/SQL] 종류

- 익명 블럭 : 식별자(이름)없는 블럭문
- 명시적 블럭 : DB의 객체로 사용되는 블럭문
                    (프로시저, 함수, 패키지(하나 이상의 프로시저/함수 묶음), 트리거)

[PL/SQL] 변수

- 구조
    identifier  [constant]  datatype   [ not null ]    [ := (default expression)] ;
    식별자     상수선언   변수타입   null가능유무  값
    ex) DECLARE  CODE  VARCHAR2(10);
    ex) DECLARE  CODE  VARCHAR2(10) := '2019D00001';
    ex) DECLARE  CODE  VARCHAR2(10) DEFAULT '2019D00001'

- 팁 : 변수는 하나의 값 이상 가질 수 있다(배열), 예: 테이블의 ROW값 들
    ex)
        -- 테이블 전체 row를 값으로 가지는 경우 ( %ROWTYPE )
        DECLARE
            DATA   EMP%ROWTYPE;
        BEGIN
            SELECT   *   INTO  DATA
            FROM    EMP
            WHERE   EMPNO = '1234';
            DBMS_OUTPUT.PUT_LINE(DATA.NAME || ', ' || DATA.DEPT_NO);
        END;

        -- 테이블의 특정 컬럼만 지정하는 경우 ( %TYPE )
        DECLARE
            V_NAME   EMP.NAME%TYPE;
            V_DEPTNO   EMP.DEPTNO%TYPE;
        BEGIN
            SELECT   A.NAME, A.DEPTNO  INTO  V_NAME, V_DEPTNO
            FROM    EMP A
            WHERE   EMPNO = '1234';
            DBMS_OUTPUT.PUT_LINE(V_NAME || ', ' || V_DEPTNO);
        END;

- Oracle에서 값의 대입 연사자로 ":="를 사용한다, '='는 '같다'를 의미한다.


~ 작성중 ............

이 블로그의 인기 게시물

[C#] 연산자 목록(Operators)

[C#] C# 프로그램의 일반적인 구조(A skeleton of a C# program)

// A skeleton of a C# program  using System; namespace YourNamespace {     class YourClass     {     }     struct YourStruct     {     }     interface IYourInterface      {     }     delegate int YourDelegate();     enum YourEnum      {     }     namespace YourNestedNamespace     {         struct YourStruct          {         }     }     class YourMainClass     {         static void Main(string[] args)          {             //Your program starts here...         }     } } By Microsoft.MSDN :: .NET Guide Docs

[C#] 간결한 식(expression)

[ 기본 간결식 ] member => expression; (example 1 : 메서드) using System; public class Person { public Person(string firstName, string lastName) { fname = firstName; lname = lastName; } private string fname; private string lname; public override string ToString() => $"{fname} {lname}".Trim(); public void DisplayName() => Console.WriteLine(ToString()); } class Example { static void Main() { Person p = new Person("Mandy", "Dejesus"); Console.WriteLine(p); p.DisplayName(); } } (example 2 : 생성자) public class Location {    private string locationName;    public Location(string name) => Name = name;    public string Name    {       get => locationName;       set => locationName = value;    } } (example 3 : 종료자) using System; public class Destroyer {    public override string ToString() => GetT...