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
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
博客介绍了在Oracle中创建临时表的存储过程,因存储过程里不能直接用DDL语句,需使用动态SQL执行。还说明了临时表的两种指定类型,ON COMMIT DELETE ROWS是事务指定,提交后截断表;ON COMMIT PRESERVE ROWS是会话指定,中断会话时截断表。
3773

被折叠的 条评论
为什么被折叠?



