在Oracle数据库中,创建临时表的方法如下:
- 创建全局临时表(Global Temporary Table):
全局临时表是一种特殊类型的表,它在数据库中定义,但在用户会话期间存储数据。当会话结束时,数据将被自动删除。要创建全局临时表,请使用以下语法:
CREATE GLOBAL TEMPORARY TABLE table_name ( column1 datatype, column2 datatype, ... ) ON COMMIT {DELETE | PRESERVE} ROWS;
其中,table_name
是临时表的名称,column1
、column2
等是列名,datatype
是相应列的数据类型。ON COMMIT
子句用于指定在提交事务时是否删除数据。DELETE
表示在提交事务时删除数据,PRESERVE
表示保留数据。
例如,创建一个名为temp_employees
的全局临时表,包含employee_id
和salary
两列:
CREATE GLOBAL TEMPORARY TABLE temp_employees ( employee_id NUMBER, salary NUMBER ) ON COMMIT DELETE ROWS;
- 创建私有临时表(Private Temporary Table):
私有临时表是在PL/SQL程序中定义的临时表,它们只在程序执行期间存在。要创建私有临时表,请在PL/SQL程序中使用以下语法:
DECLARE TYPE table_type IS TABLE OF record_type INDEX BY PLS_INTEGER; temp_table table_type; BEGIN -- 在此处使用temp_table END;
其中,table_type
是临时表的类型,record_type
是记录类型,temp_table
是临时表的变量。
例如,创建一个名为temp_employees
的私有临时表,包含employee_id
和salary
两列:
DECLARE TYPE emp_record IS RECORD ( employee_id NUMBER, salary NUMBER ); TYPE temp_employees IS TABLE OF emp_record INDEX BY PLS_INTEGER; emp_table temp_employees; BEGIN -- 在此处使用emp_table END;
注意:私有临时表不能在SQL语句中使用,只能在PL/SQL程序中使用。