在Oracle數據庫中,創建臨時表的方法如下:
全局臨時表是一種特殊類型的表,它在數據庫中定義,但在用戶會話期間存儲數據。當會話結束時,數據將被自動刪除。要創建全局臨時表,請使用以下語法:
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;
私有臨時表是在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程序中使用。