이펙티브 오라클 (2008년)
왜 PLSQL 인가? 0 0 814

by 구루비스터디 PLSQL [2009.04.30]


PL/SQL은 가장 효율적인 데이터 조작어이다.


/* 간단한 PL/SQL 루틴 */
CREATE OR REPLACE PROCEDURE process_data(p_inputs IN VARCHAR2)
AS
BEGIN
    FOR x IN (SELECT * FROM emp WHERE ename LIKE p_inputs)
    LOOP
        Process(X);
    END LOOP;
END;


  • PL/SQL 데이터 유형이 SQL 데이터 유형이다.
  • 프로그래밍 언어 유형과 데이터베이스 유형은 동일하기 때문에 따로 변환이 필요 없다.


SQL과 PL/SQL은 쉽게 혼합될 수 있다.
  • FOR x IN (SELECT ...) 이 구문에서 컴파일러는 x 를 정의하는 방법을 알고 있으며
  • 묵시적으로 레코드의 유형을 생성하고, 쿼리로부터 데이터를 입수하여
  • 암묵적으로 정의된 레코드에 넣기 위한 일련의 작업을 알아서 한다.
비교PL/SQLJava
데이터베이스 자료유형일치불일치
레코드 유형 및 변수 정의자동수동
쿼리의 Open 과 Close자동수동
데이터베이스 변경자유롭다자유롭지 못함


PL/SQL은 이식 및 재사용이 가능하다.

  • Java 나 C 언어는 이식성과 재사용성이 뛰어나지만 자바는 자바, C는 C에서만 재사용된다.
  • 기타 다른 언어에서 서로를 호출할 수는 있으나 이는 자연스럽지 못하다.
  • 반면 PL/SQL은 데이터베이스에 연결된 프로그램이라면 어떤 언어에서도 호출이 가능하다.
  • PL/SQL도 언어이기 때문에 프로그래머의 역량에 따라 최악의 코딩을 할 수도 있다.
  • 그러나 다른 언어에서 생길 수있는 오류가 PL/SQL에서는 나타나기 어렵다.
    • 바인드 변수의 사용 : 정적 SQL에서 바인드 변수 사용이 쉽다.
    • 한번의 파스와 여러번의 실행 : 정적 SQL을 사용하면 과도한 파싱과정이 없다.
    • SELECT * : 테이블의 변화에 적응한다. 열 추가, 삭제 및 순서 변경시 다른 응용프로그램은 동작하지 않는다.
    • 스키마 변경 : 컬럼 크기 조정시에 잘 작성된 PL/SQL은 영향을 받지 않지만 다른 응용프로그램은 이 환경을 수용하도록 수정되어야만 한다. (%TYPE, %ROWTYPE 은 PL/SQL만의 장점이다)
"구루비 데이터베이스 스터디모임" 에서 2008년에 "이펙티브 오라클" 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3572

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입