기본 콘텐츠로 건너뛰기

[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에서 값의 대입 연사자로 ":="를 사용한다, '='는 '같다'를 의미한다.


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

이 블로그의 인기 게시물

Devexpress GridView 팁들

GridView 를 사용하다 보면 Cell 들을 Merge할 때가 발생합니다. 따라서, Cell Merge하는 방법은 아래와 같이 할 수 있습니다. 1. 세로 Merge GridView.OptionsView.AllowCellMerge = true; 이와 같이 옵션을 설정하면, 기본적으로 Column 단위로 같은 Value 값을 가지는 Cell 단위로 Merge를 합니다. GridColumn.OptionsColumn.AllowMerge = false; 이와 같이 할경우 해당 Column은 Merge를 실행하지 않습니다. GridView.CellMerge Event를 통해 사용자 조건별로 Merge를 할 수 있습니다 void gridView1_CellMerge(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e) {                if (e.Column.FieldName == "Q'TY")     {         int iValue1 = Convert.ToInt32(e.CellValue1);         int iValue2 = Convert.ToInt32(e.CellValue2);         e.Merge = true;         e.Handled = true;     } } 2. 가로 Merge 가로 Merge 같은 경우는 GridView에서 옵션으로 기본 제공하지 않습니다. 따라서 해당 Cell을 강제적으로 다시 그려주는 등 여러 가지 Event를 사용해야 합니다. 따라서 Devexpress 에서 예제로 나오 있는 곳을 링크하는 것으로 대신합니다. Merge cells Horizontally in GridView https://www.devexpress.com/Support/Center/Example/Details/E2472/how-to-merge-cells-horizontally-in-gr

[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