Global Temparary Table
Global Temparary Table
Create Temporary Table in Oracle To create a table named test with column col1 type varchar2 length 10, col2 type number. col3 type clob we can use CREATE TABLE statement as, CREATE TABLE TEST(col1 VARCHAR2(10), col2 NUMBER, col3 CLOB); Now if I insert data into the table the data is visible and accessible to all users. In many cases it is needed the data inside a table will be reside temporarily. In that case we can use temporary tables. Temporary tables are useful in applications where a result set is to be buffered. To create temporary table we have to issue CREATE GLOBAL TEMPORARY clause. Temporary table can be of two types based on ON COMMIT clause settings. 1)ON COMMIT DELETE ROWS specifies temporary table would be transaction specific. Data persist within table up to transaction ending time. If you end the transaction the database truncates the table (delete all rows). Suppose if you issue commit or run ddl then data inside the temporary table will be lost. It is by default option. Example: (i)This statement creates a temporary table that is transaction specific: CREATE GLOBAL TEMPORARY TABLE test_temp(col1 number, col2 number) ON COMMIT DELETE ROWS; Table created. (ii)Insert row in to the temporary table. insert into test_temp values(3,7); 1 row created. (iii)Look at the data in the table. select * from test_temp; COL1 COL2 ---------- ---------37 (iv)Issue Commit. commit; Commit complete. (v)Now look at the data in the temporary table. As I created transaction specific temporary table(on commit delete rows) so data is lost after commit.
SQL> select * from test_temp; no rows selected 2)ON COMMIT PRESERVE ROWS specifies temporary table would be session specific. Data persist within table up to session ending time. If you end the session the database truncates the table (delete all rows). Suppose you type exit in SQL*Plus then data inside the temporary table will be lost. Example of Session Specific Temporary Tables: 1)Create Session Specific Temporary Table test_temp2. CREATE GLOBAL TEMPORARY TABLE test_temp2 (col1 number, col2 number) ON COMMIT PRESERVE ROWS; (ii)Insert data into it and look at data both before commit and after commit. insert into test_temp2 values(3,7); 1 row created. SQL>select * from test_temp2; COL1 COL2 ---------- ---------37 (iii) commit; Commit Complete (iv)select * from test_temp2; COL1 COL2 ---------- ---------37
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 Production With the Partitioning, OLAP and Data Mining options
$ sqlplus apps/[email protected] Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 Production With the Partitioning, OLAP and Data Mining options SQL> select * from test_temp2; no rows selected This is how Global Temporary Tables are used.