728x90
반응형

PL/SQL이란

  • 오라클에서 제공하는 프로그래밍 언어
  • Procedural Language/SQL의 약자
  • 일반 프로그래밍 언어적인 요소를 거의 다 가지고 있어서 실무에서 요구되는 절차적인 데이터 처리를 다 할 수 있다.
    • 특히 SQL과 연동되어서 막강한 기능 구현 가능
  • 데이터 트랜잭션 처리능력이나 정보보호, 데이터에 대한 보안, 예외처리 기능, 객체지향 등 데이터베이스와 관련된 중요한 모든 기능을 지원하기 때문에 데이터베이스 업무를 처리하기에 최적화된 언어

 

PL/SQL의 런타임 구조

[그림1] PL/SQL의 런타임 구조
[그림2] PL/SQL의 런타임 구조

 

 

PL/ SQL의 기본 구조

  • 선언부(DECLARE), 실행부(BEGIN), 예외처리부(ECEPTION)로 구성된다.
  • Anonymous PL/SQL Block(익명블록) 과 Stored PL/SQL Block(저장된 블록)이 있다.
  • 익명 블록은 주로 일회성으로 사용할 경우 많이 사용되고, 저장된 블록은 서버에 파싱 해서 저장해 놓고 주기적으로 반복해서 사용할 경우 사용된다.
  • Stored PL/SQL Block은 다른 용어로 서브프로그램 또는 프로그램 단위라고도 하며, 스키마를 구성하는 오브젝트로서 파싱 된 후 오라클 서버 내부에 저장되거나 오라클 툴 안에 라이브러리 형태로 저장되어 있다.

 

 

PL/SQL BLOCK 기본구성

Declare(선언부) 모든 변수나 상수를 선언하는 부분
Executable(실행부) 제어문, 반복문, 함수정의 등의 로직을 기술한다.
Exception(예외 처리부) 실행 도중 에러 발생시 해결하는 문장들을 기술한다.
  • 블록 내의 각 부분에 포함되는 명령들 중 DECLARE, BEGIN, EXCEPTION과 같은 예약어들은 ;(세미콜론)으로 끝나지 않지만, 나머지 명령어들은 SQL 문장처럼 세미콜론(;)으로 끝이 난다.

 

PL/SQL 블록 작성 시 기본 규칙과 권장 사항

  • 문장은 여러 줄에 걸쳐질 수 있으나, 키워드는 분리될 수 없다.(SQL문법과 동일)
  • 블록의 내용을 읽기 쉽도록 공백 문자를 사용해 키워드 내지는 문장을 적절하게 분리함으로써 의미 분석이 되도록 하며, 들여 쓰기도 권장한다.
  • 예약어는 식별자명으로 사용될 수 없으나, Alias로는 사용될 수 있다.
    • 이중 부호(")를 함께 사용할 수 있다는 뜻. ex ("TABLE")
  • 식별자명은 기본 오라클 Naming Rule을 준수한다.
  • 리터럴(문자, 날짜)은 단일 인용부호(')로 표시해야 하며 널 값은 NULL상수로 기술한다.
  • 주석처리를 하고자 할 경우 단일 행은 -- (하이픈 두 개), 복수 행은 /*로 시작하고 */로 종료한다.
  • PL/SQL 블록 내에 명령(수식)에서는 오라클 함수를 사용할 수 있으나 그룹 함수와 DECODE함수는 SQL 문장에 포함되어야만 사용될 수 있다.
    • 만약 다른 경우에 그룹함수와 DECODE 함수를 사용할 경우 에러가 발생하며 PL/SQL에서는 에러(EXCEPTION) 처리와 관련된 함수에는 SQLCODE 함수와 SQLERRM 함수가 별도로 존재한다.

 

PL/SQL 문 내에서의 SQL 문장 사용하기

  • END 키워드는 트랜잭션의 끝이 아니라 PL/SQL 블록의 끝을 나타낸다.
  • PL/SQL은 DDL(데이터 정의어) 문을 직접 지원하지 않는다.
  • DLL문은 동적 SQL 문이다. 동적 SQL문은 런타임에 문자열로 작성되며 파라미터의 위치 표시자를 포함할 수 있다.
  • PL/SQL은 GRANT 또는 REVOKE와 같은 DCL(데이터 제어어) 문을 직접 지원하지 않는다.
    • DDL 문과 마찬가지로 동적 SQL을 사용해 DCL문을 실행할 수 있다.
728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기