`
DataBird
  • 浏览: 72450 次
  • 性别: Icon_minigender_1
  • 来自: 湖南长沙
社区版块
存档分类
最新评论

简单理解:global temporary table

阅读更多
简单动机:出于对运行速度的无法忍受,我将嵌套sql语句中关于group by的内容放入临时表,作为中间变量。
简单做法:第一次使用临时表,查看有事务级别和会话级别2种,我选会话级别的即可。
简单理解:一次DB连接就是一次会话,如果有N个用户连接DB,大家都可以来用这个临时表,即为“全局”;但是需要隔离各自的内容,互不干扰,所以是会话级别的;所谓“临时”,即会话结束后,系统帮助清空,很方便。表内内容应该是存在内存里面的。

CREATE OR REPLACE PROCEDURE P_WY_NE_ZTE_LAC_CI AS

BEGIN
  /*ZTE 后台以 BSC,BTS,CELL 唯一标识小区,而LAC,CI是要配置数据关联过来的*/
  --ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)
  --ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表。
  DELETE IBTS_BTS_NOW WHERE RECDATE = TRUNC(SYSDATE);
  COMMIT;
  INSERT INTO IBTS_BTS_BSCCONFSETID_TEMP    SELECT BSC, MIN(CONFSETID) CONFSETID
      FROM IBTS_BTS
     WHERE RECDATE = TRUNC(SYSDATE)
     GROUP BY BSC;
  COMMIT;
  INSERT /*APPEND*/
  INTO IBTS_BTS_NOW
    SELECT *
      FROM IBTS_BTS
     WHERE RECDATE = TRUNC(SYSDATE)
       AND (BSC, CONFSETID) IN (SELECT * FROM IBTS_BTS_BSCCONFSETID_TEMP);
  COMMIT;
  DELETE IBTS_BTS_NOW WHERE RECDATE <= TRUNC(SYSDATE) - 30;
  COMMIT;
END;

-- Create table
create global temporary table IBTS_BTS_BSCCONFSETID_TEMP(
  bsc       NUMBER(10) not null,
  confsetid NUMBER
)
on commit preserve rows;
分享到:
评论

相关推荐

    Oracle存储过程中使用临时表

    CREATE GLOBAL TEMPORARY TABLE temp_table ( column1 datatype, column2 datatype, ... ) ON COMMIT DELETE ROWS; ``` 这里的`ON COMMIT DELETE ROWS`选项表示当事务提交时,表中的所有数据将被删除。 2. *...

    Oracle常用的和表(Table)相关的命令

    sql&gt; create global temporary table xay_temp as select * from xay on commit preserve rows / on commit delete rows; ``` **解析**: - `create global temporary table`: 创建全局临时表。 - `on commit ...

    Oracle特性临时表

    - 使用`CREATE GLOBAL TEMPORARY TABLE`语句创建临时表。 - 可以通过`ON COMMIT`子句来定义数据的生命周期,即数据在何时被清除。 #### 三、创建临时表 **1. 基本语法:** ```sql CREATE GLOBAL TEMPORARY TABLE ...

    简单理解数据库临时表

    - **全局临时表**(Global Temporary Table, GGT):不同于会话级临时表,全局临时表可以在整个数据库实例内共享,并且可以在提交或回滚事务后保留数据,直到下一次插入新数据覆盖为止。 #### 四、临时表的创建与...

    Temp-Table-In-Oracle.rar_TEMP TABLE orac_Table_oracle ppt

    1. **创建临时表**: 创建临时表的语法与创建普通表类似,但需在表名前加上关键字"GLOBAL TEMPORARY TABLE"。例如: ```sql CREATE GLOBAL TEMPORARY TABLE temp_table ( column1 datatype, column2 datatype, ....

    有关于oracle数据库的sql指令集

    - **创建**:`CREATE GLOBAL TEMPORARY TABLE &lt;table_name&gt; (column1 datatype, column2 datatype, ...) ON COMMIT PRESERVE ROWS;` - **示例**:创建会话级临时表`tmp_user_session`,该表在会话结束时数据会被...

    数据库对象和编程方法

    DECLARE GLOBAL TEMPORARY TABLE SESSION.t_projects AS ( full select ) DEFINITION ONLY ON COMMIT PRESERVE ROWS NOT LOGGED WITH REPLACE IN TABLESPACE apptemps; ``` 最后,我们提到了几个与时间相关的内置...

    非常全的oracle sql指令

    - 示例:`CREATE GLOBAL TEMPORARY TABLE tmp_user_session (user_id INT, user_name VARCHAR2(20), user_email VARCHAR2(30)) ON COMMIT PRESERVE ROWS;` 2. **事务级临时表** - 创建时使用`ON COMMIT DELETE ...

    Oracle_临时表介绍

    CREATE GLOBAL TEMPORARY TABLE Table_Name (Col1 Type1, Col2 Type2...) ON COMMIT PRESERVE ROWS; ``` 例如: ```sql CREATE GLOBAL TEMPORARY TABLE Student (Stu_id NUMBER(5), Class_id NUMBER(5), Stu_...

    Oracle 临时表用法

    CREATE GLOBAL TEMPORARY TABLE Table_Name ( Col1 Type1, Col2 Type2 ) ON COMMIT PRESERVE ROWS; ``` 示例: ```sql CREATE GLOBAL TEMPORARY TABLE Student ( Stu_id NUMBER(5), Class_id NUMBER(5), Stu_...

    Oracle9i模式对象.pptx

    CREATE GLOBAL TEMPORARY TABLE 语句可以用于创建临时表。例如,CREATE GLOBAL TEMPORARY TABLE ... 12. Free space after delete 在删除数据后,Oracle 9i 数据库中会留下空闲空间。这个空闲空间可以用于将来插入...

    Oracle中临时表的创建

    本文将详细介绍如何在Oracle中创建临时表,并探讨其应用场景以及两种主要类型的临时表:全局临时表(Global Temporary Table)与局部临时表(Local Temporary Table)的区别及其使用方法。 #### 二、Oracle临时表...

    SqlServer与Oracle差异

    - Oracle的全局临时表语法:`CREATE GLOBAL TEMPORARY TABLE aa(col number) ON COMMIT PRESERVE ROWS`,可以选择在事务处理结束后保留或删除数据。 - Sql server使用`SELECT * INTO #temptable FROM existed ...

    OracleTemporaryTables(Oracle临时表).docx

    CREATE GLOBAL TEMPORARY TABLE TABLE_NAME (COUMNS …) AS SELECT … FROM TABLE ON COMMIT DELETE ROWS; ``` 2. **会话级临时表**: 使用`ON COMMIT PRESERVE ROWS`选项创建。在这种情况下,数据会在当前...

    SQL_server_与Oracle数据库开发区别

    - **Oracle**:`CREATE GLOBAL TEMPORARY TABLE aa (col NUMBER) ON COMMIT PRESERVE ROWS;` - **SQL Server**:`SELECT * INTO #tempTable FROM existedTable` ##### 查询方面 - 查找表的前N行记录: - **...

    oracle学习笔记整理

    CREATE GLOBAL TEMPORARY TABLE table_name (column_specification) ON COMMIT PRESERVE ROWS; ``` 2. 事务级临时表: ```sql CREATE GLOBAL TEMPORARY TABLE table_name (column_specification) ON COMMIT DELETE ...

    SQL转Oracle的方法

    - **Oracle**:`CREATE GLOBAL TEMPORARY TABLE table1 (c int) ON COMMIT PRESERVE ROWS;` - Oracle 中使用 `GLOBAL TEMPORARY TABLE` 来创建临时表。这类表的特点是在事务提交后保留其内容,直到下一个事务开始时...

    MySQL数据库开发期末复习题.doc

    9. 临时表:CREATE TEMPORARY TABLE语句用于创建临时表。 10. UNION关键字:UNION关键字能够将两个或多个SELECT语句的结果连接起来。 11. 连接语句:连接语句的格式为mysql -h myhost.example。 12. 查看版本语句...

    初窥Oracle

    CREATE [GLOBAL TEMPORARY] TABLE table_name ( Column_name type [CONSTRAINT constraint_def DEFAULT default_exp], ... )[ON COMMIT {DELETE|PRESERVE} ROWS] TABLESPACE tab_space; ``` **语法解释**: 1. **...

    oracle临时表用法

    CREATE GLOBAL TEMPORARY TABLE table (column datatype [DEFAULT expr] [{ NULL | NOT NULL}], [column datatype [DEFAULT expr] [ {NULL | NOT NULL} ]...) ON COMMIT {DELETE | PRESERVE} ROWS; ``` 其中,`ON...

Global site tag (gtag.js) - Google Analytics