oracle有什么办法可以生成一个临时表,表只有1列,2个时间点之间的月份列表

oracle有什么办法可以生成一个临时表,表只有1列,2个时间点之间的月份列表,第1张

WITH TMP_DAY AS (

SELECT TO_CHAR(ADD_MONTHS(TO_DATE('20080101','YYYYMMDD'),ROWNUM-1),'YYYY-MM-DD') DAY_ID

FROM DUAL

CONNECT BY ROWNUM<=12

)

SELECT FROM TMP_DAY

;

/

--TO_DATE('20080101','YYYYMMDD')修改成初始时间点,

--本年:TRUNC(SYSDATE,'YYYY'),

--CONNECT BY ROWNUM<=12,12表示行数,2年就是24,自己改

2008-01-01

2008-02-01

2008-03-01

2008-04-01

2008-05-01

2008-06-01

2008-07-01

2008-08-01

2008-09-01

2008-10-01

2008-11-01

2008-12-01

/

Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会一直增长

Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。

重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会一直增长。直到耗尽硬盘空间。

temporary table :临时表,有两种方法

1、on commit delete rows;当COMMIT的时候删除数据

2、on commit preserve rows;当COMMIT的时候保留数据

当不写的时候默认为1。

所以你的第一条语名自然没有数据。但你如果在程序中使用的话此临时表的数据的生命周期就是本程序开始至结束。

第二条语句要变为:create global temporary table abcd on commit delete rows as select aa1,bb2 from a,b where aid=bid ;

子句 on commit preserve rows 表明 temp_tbl 是session 级别的临时表

1 正确, global temporary 关键字是临时表必选关键字,具有适当权限的所有用户都可以访问

(联机文档文:

Specify GLOBALTEMPORARY to indicate that the table is temporary and that its definition is visible to all sessions with appropriate privileges)

2 错误,临时表数据值在当前session有效,不同session互不干扰

3 错误,原因参照第1条

4 错误,原因参照第1条

对全局临时表的总结

在临时表上的 *** 作比在一般的表上的 *** 作要快。因为:

1创建临时表不需要往编目表中插入条目,临时表的使用也不需要访问编目表,因此也没有对编目表的争用。

2仅有创建临时表的app才可存取临时表,所以在处理临时表时没有锁。

3如果指定NOT LOGGED选项,在处理临时表时不记日志。所以如果有仅在数据库的一个会话中使用的大量临时数据,把这些数据存入临时表能大大提高性能。

DECLARE GLOBAL TEMPORARY TABLE TT(C1 INT, C2 CHAR(20));

在CONNECT RESET命令后,临时表不再存在。

建临时表是动态编译的,所以对临时表的使用也必须放在DECLARE CURSER 后面

CREATE PROCEDURE INSTT2(P1 INT, P2 CHAR(20))

BEGIN

DECLARE GLOBAL TEMPORARY TABLE TT(C1 INT, C2 CHAR(20)) %

INSERT INTO SESSIONTT VALUES(P1, P2);

BEGIN

DECLARE C1 CURSOR WITH RETURN FOR SELECT FROM SESSIONTT;

END;

END %

2。事务特有的临时表

CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>)

ON COMMIT DELETE ROWS;

在Oracle中,全局临时表并不会删除,实际上你只需要建立一次,以后直接应用就行了,这与MS和Sybase不一样。实际上在断开数据库连接时,临时表中数据自动清空,不同的Session之间是隔离的,不许要当心相互影响,不过如果起用了连接共享的话,你要用On Commit delete rows使数据仅在事物内部有效。

以上就是关于oracle有什么办法可以生成一个临时表,表只有1列,2个时间点之间的月份列表全部的内容,包括:oracle有什么办法可以生成一个临时表,表只有1列,2个时间点之间的月份列表、Oracle数据库临时表空间用途问题、在Oracle中,如何将查询出的数据存入临时表中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10193072.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存