당신은 임시 테이블을 만들 언급하지만, 아마도 당신은 한 번 생성하고이를 각을 다시 시도하지 않는 살아있는 동안 테이블은 불가능하다 plsql 코드가 실행될 때, 그리고 인덱스 정의가 임시 테이블에 남아있을 수 있습니다. 이것은 코드를 실행할 때마다 생성 될 필요가 없습니다.
전역 임시 테이블에는 정적 정의가 있습니다.이 테이블을 만들면 거기에 있지만 다시 실행/실행 취소가 생성되지 않으며 해당 데이터가 채워진 세션에서만 볼 수 있습니다.
SQL*Plus: Release 10.1.0.4.2 - Production on Wed Oct 26 01:23:17 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
SQL> select * from test;
no rows selected
SQL> insert into test values ('three');
1 row created.
SQL> select * from test;
NAME
--------------------
three
위로 첫 번째 세션 SQL> 커밋 다른 세션이어서
SQL*Plus: Release 10.1.0.4.2 - Production on Wed Oct 26 01:22:30 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
SQL> create global temporary table test (name varchar2(20));
Table created.
SQL> insert into test values ('one');
1 row created.
SQL> insert into test values ('two');
1 row created.
SQL> select * from test;
NAME
--------------------
one
two
; 우리는 우리의 두 번째 세션에서 데이터를 삽입하기 때문에 우리가 두 번째 세션에서 커밋 될 때까지
Commit complete.
SQL> select * from test;
no rows selected
SQL> drop table test;
drop table test
*
ERROR at line 1:
ORA-14452: attempt to create, alter or drop an index on temporary table already
in use
, 우리는 임시 테이블 에 아무것도 할 어차피 다음 드롭은
당신은 내용을 가지고 할 수있는 옵션이 성공 세션을 종료 할 때까지 (커밋 행을 삭제할 때) 커밋 할 때 또는 커밋을 보존 할 때까지 데이터를 보관할 때 세션을 삭제합니다.