[오라클 PL/SQL] 오라클 임시 테이블 – 세션 GTT란?


안녕하세요.

 

오늘은 오라클 임시 테이블 두 번째 시간으로 써, 세션 GTT(Global Temporary Table)에 대해서 알아 보려고 합니다.

 

앞에서 배웠던 트랜잭션 GTT와는 달리 세션 GTT는 세션 내에서 유지되는 임시 테이블입니다.

 

그럼 세션 GTT 구문을 먼저 살펴 보도록 하겠습니다.


 

세션 GTT 구문


CREATE GLOBAL TEMPORARY TABLE 테이블명 (

컬럼1 데이터타입,

)

ON COMMIT PRESERVE ROWS;

 

세션 GTT 구문은 위와 같습니다.

 

위의 마지막에 있는 “ON COMMIT PRESERVE ROWS”COMMIT을 실행한 후에도 데이터(로우)를 보존하라는 뜻이며 같은 세션 내에 있는 한 데이터가 유지됩니다.

 

그럼 실제로 세션 내에 데이터가 유지되는지 세션 GTT 테이블을 직접 만들어서 확인해 보도록 하겠습니다.

 

세션 GTT 테이블 생성


1

2

3

4

5

6

7

CREATE GLOBAL TEMPORARY TABLE stu_sess_gtt

(

    name varchar2(50),

    age number,

    grade number

)

ON COMMIT PRESERVE ROWS;

cs

 

세션 GTT 테이블 사용


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

DECLARE

    vn_cnt1 number := 0;

    vn_cnt2 number := 0;

    

BEGIN

    --데이터 넣기

    INSERT INTO stu_sess_gtt(name, age, grade)

    VALUES ('범범조조'271);

    

    INSERT INTO stu_sess_gtt(name, age, grade)

    VALUES ('안정환'222);

    

    INSERT INTO stu_sess_gtt(name, age, grade)

    VALUES ('류현진'264);

    

    --COMMIT  데이터 개수 확인

    SELECT COUNT(*)

    INTO vn_cnt1

    FROM stu_sess_gtt;

    

    COMMIT;

    

    --COMMIT  데이터 개수 확인

    SELECT COUNT(*)

    INTO vn_cnt2

    FROM stu_sess_gtt;

    

    --데이터 출력

    DBMS_OUTPUT.PUT_LINE('COMMIT  개수 : ' || vn_cnt1);

    DBMS_OUTPUT.PUT_LINE('COMMIT   개수 : ' || vn_cnt2);

    

END;

Colored by Color Scripter

cs

 

실행 결과



위와 같이 COMMIT 전과 후의 데이터 개수가 일치하는 것을 확인하실 수 있습니다.

 

감사합니다.^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY