본문 바로가기

Develop/DBMS

PL/SQL기초3

PLSQL에서는 3가지 형태의 Collection type을 지원한다.

  1. Associative array : 일반적으로 사용하는 table이라고 생각(key, value를 이용해 table에 접근)
  2. VARRAY : 크기가 정해진 배열 타입
  3. Nested table : 크기가 정해지지 않은 배열 타입

 

Associative array

  • Key-value 쌍으로 구성되며 각 키는 Unique Index로 배열처럼 연관된 값을 변수이름(인덱스) 형태로 접근한다. 즉 인덱스는 Integer or String 타입이 가능하며 키값으로 정렬된다.
  • 1차원 배열과 같은 데이터 타입으로 크기가 동적으로 늘어난다.
  • 먼저 TYPE을 정의 후 변수의 데이터 타입으로 할당하여 사용한다.

 

VARRAY

  • 요소의 수가 0부터 가변적으로 변하는 배열처럼 쓰이는 타입으로 Nested Type과 다른점은 최대사이즈를 정한다는 것, 즉 크기가 정해진다는 것이다.
  • 프로그래밍 언어의 크기가 정해진 배열과 유사하다.

 

Nested table 

  • 위의 Associative array 방식에서 index by가 빠진 형태로 특별한 순서없이 행의 수(최대크기)도 정해지지 않은 칼럼처럼 사용되는 타입니다.
  • 시작 인덱스는 1이며 변수이름(인덱스) 형태로 접근 가능하다.

 

PLSQL에서는 3가지 형태의 Record type을 지원한다.

  1. User-Defined records : 사용자가 서로 다른 필드로 레코드 구조를 정의
  2. Table-Based records : %rowtype 이용
  3. Cursor-Based records : %rowtype 이용

 

Cursor

Cursor란, SQL문을 처리한 결과 집합을 가리키는 일종의 포인터이다.

이 결과 집합은 오라클 서버 프로세스 내부의 Private SQL Area라는 메모리 영역에 저장되는데, 여기서 유의해야 할 점은 커서는 클라이언트 측 프로세스에서 가리키고 있다는 점이다.

Private SQL Area는 특정 쿼리에 대한 결과를 저장하면서 캐싱 하는 역할을 하는데, 한 세션 안에서 같은 쿼리를 반복적으로 호출한다면, 저장되어 있는 결과 집합을 반환하면서 자원 낭비를 최소화한다.

SELECT문으로 특정 테이블에 있는 데이터를 조회할 때, 이 EMPLOYEE라는 테이블의 조회된 값들이 Private SQL Area에 저장되고, 커서로 이영역을 가리킨다.

이후 만약 이 영역을 사용할 경우 Cursor를 이용해 호출하면되기 때문에 자원 낭비를 최소화할 수 있다.

 

 

커서의 종류

  1. 암(묵)시적 커서(Implicit cursor) : 오라클 내부에서 자동으로 생성되어 사용하며 PLSQL블록안에서 실행하는 SQL문장 실행시 자동으로 만들어져 생성되는 커서
  2. 명시적 커서(Explicit cursor) : 사용자가 직접 정의해서 사용하는 커서

 

PLSQL에서 IF 조건문

  • IF-THEN : 특정 조건을 만족하는 경우 작업 수행
  • IF-THEN-ELSE : 특정 조건을 만족하는 경우와 그렇지 않은 경우의 작업 수행
  • IF-THEN-ELSEIF : 위의 두 가지 이외의 여러 조건에 따라 각각 지정한 작업 수행

 

PLSQL에서 LOOP

반복문과 관련된 명령어 

  • EXIT :  수행 중인 반복 종료
  • EXIT-WHEN : 조건식을 만족하면 반복 종료
  • CONTINUE : 수행 중인 반복의 현재 주기를 건너뜀
  • CONTINUE-WHEN : 조건식을 만족하면 수행 중인 반복의 현재 주기를 건너뜀

'Develop > DBMS' 카테고리의 다른 글

PL/SQL기초2  (0) 2022.04.14
PL/SQL기초1  (0) 2022.04.13
Oracle 문법, 쿼리, 예제  (0) 2022.04.01