说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何创建一个临时表

编辑:说三道四文库 发布时间:2018-07-18 10:54
HTML文档下载 WORD文档下载 PDF文档下载
在存储过程中如何创建一个临时表,创建后,怎么使用,请给点例子!
谢谢!
在Oracle8i中,可以创建以下两种临时表: 
1。会话特有的临时表 
CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification> ) 
ON COMMIT PRESERVE ROWS; 

2。事务特有的临时表 
CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification> ) 
ON COMMIT DELETE ROWS; 
CREATE GLOBAL TEMPORARY TABLE MyTempTable 
所建的临时表虽然是存在的,但是你试一下insert 一条记录然后用别的连接登上去select,记录是空的,明白了吧。
下面两句话再贴一下: 
--ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行) 
--ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表。
CREATE PROCEDURE drop_table (table_name IN VARCHAR2) AS
   cid INTEGER;
BEGIN
   /* Open new cursor and return cursor ID. */
   cid := DBMS_SQL.OPEN_CURSOR;
   /* Parse and immediately execute dynamic SQL statement built by
      concatenating table name to DROP TABLE command. */
   DBMS_SQL.PARSE(cid, 'DROP TABLE ' || table_name, dbms_sql.v7);
   /* Close cursor. */
   DBMS_SQL.CLOSE_CURSOR(cid);
EXCEPTION
   /* If an exception is raised, close cursor before exiting. */
   WHEN OTHERS THEN
      DBMS_SQL.CLOSE_CURSOR(cid);
      RAISE;  -- reraise the exception
END drop_table;


用这个例子,我想你可以写一个create table的procedure :-)
CREATE GLOBAL TEMPORARY TABLE employee_temp
AS SELECT * FROM employee;

ON COMMIT DELETE ROWS to specify that rows are only visible within the
transaction
ON COMMIT PRESERVE ROWS to specify that rows are visible for the entire
session
怎么创建不了,不好意思,我是个新手!请讲具体点
在过程中建不成临时表,具体原因也搞不清,回去查查资料再给你回复吧
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘