기본 콘텐츠로 건너뛰기

[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

[DB] 개발자가 알아야할 기본적인 쿼리 SELECT / INSERT / UPDATE / DELETE

DB관리자가 아니라면 관리에 관련된 지식보다는 DB의 자료를 활용하는 SQL(쿼리)문의 사용이 개발자에게는 더욱 중요하다. 가장 기본적인 뼈대만 정리해서 알아보자. 1. SELECT문 - 기본구조 1 2 3 4 5 6 [ WITH  < Sub Query >  ] SELECT  select_lsit [  FROM  table_source ] [  WHERE  search_condition ] [ GROUP  BY  group_by_expression ] [ HAVING search_condition ] [  ORDER   BY  order_expression [ ASC  |  DESC ] ] cs ----------- 1 2 3 SELECT  행_이름  FROM  테이블이름  WHERE  조건 cs ----------- [예제] 1 2 SELECT   *   FROM  employees; SELECT  department_id, department_name  FROM  departments; cs -- 데이터베이스 사용자(=스키마)조회 ( Oracle ) 1 SELECT   *   FROM  SYS.DBA_USERS; cs -- 테이블 중 "HR"이 소유한 테이블만 찾을떄 조건추가 -- SYS.DBA_TABLES == SYS.ALL_TABLES 1 SELECT   * ...