在ORACLE存储过程中创建临时表

来源:互联网 发布:excel 地图指引数据 编辑:程序博客网 时间:2024/06/10 20:10
create procedure pro
as
str varchar2(100);
begin
str:='CREATE GLOBAL TEMPORARY TABLE TABLENAME (
   COL1  VARCHAR2(10),
   COL2  NUMBER
) ON COMMIT PRESERVE ROWS' ;
execute immediate str;   
--使用动态SQL语句来执行
end;
/


存储过程里不能直接使用DDL语句,所以只能使用动态SQL语句来执行

--ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)
--ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表(数据将全部被删除,如在存储过程中插入数据,调用存储过程结束之后,临时表中的数据也就全部被删除)。


CREATE GLOBAL TEMPORARY TABLE admin_work_area
      
      ON COMMIT DELETE ROWS as select * from dept