最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

oracle臨時表WITH?AS用法詳解

 更新時間:2024年11月19日 11:06:47   作者:follow_me!  
文章介紹了Oracle數(shù)據(jù)庫中的臨時表,包括會話級臨時表和事務級臨時表的區(qū)別,以及它們的創(chuàng)建和使用方法,會話級臨時表數(shù)據(jù)僅在當前會話存在,而事務級臨時表數(shù)據(jù)僅在當前事務有效,文中還提供了創(chuàng)建和插入數(shù)據(jù)的示例,并簡要介紹了實際應用中的案例

臨時表分類

oracle臨時表分為會話級臨時表和事務級臨時表;

會話級的臨時表只與當前會話相關,只要當前會話還存在,臨時表中的數(shù)據(jù)就還存在,一旦退出當前會話,臨時表中的數(shù)據(jù)也隨之被丟棄;

而且不同會話中臨時表數(shù)據(jù)是不同的,當前會話只能對當前會話的數(shù)據(jù)進行操作,無法對別的會話的數(shù)據(jù)進行操作。

而事務級臨時表,只在當前事務有效,一旦進行commit事務提交之后,臨時表內(nèi)的數(shù)據(jù)就會隨著前一個事務的結束而刪除。

會話級臨時表

–創(chuàng)建會話級臨時表

create global temporary table temp_session(
id number,
ename varchar2(15)
)on commit preserve rows;

–向臨時表中插入數(shù)據(jù)

insert into temp_session values(1001,‘張三');
select * from temp_session;

preserve rows:表示在會話結束后清除臨時表的數(shù)據(jù)。

注:會話級臨時表在當前會話插入的數(shù)據(jù),只在當前會話可以進行操作。

事務級臨時表

–創(chuàng)建事務級臨時表

create global temporary table temp_trans(
id number,
ename varchar2(15)
)on commit delete rows;

–向事務級臨時表內(nèi)插入數(shù)據(jù)

insert into temp_trans values(1001,‘李四');
select * from temp_trans;

注:在數(shù)據(jù)沒有提交時,表示該事務還沒有結束,此時是可以查到表內(nèi)數(shù)據(jù)的:

實際使用案例

案例1:

with temp as
 (select * from PL_PLAN_INFO
where PL_PROJECT_MAIN_ID = '1639112109721649152')

select * from temp
connect by prior ORDER_NO = PARENT_ID
start with ORDER_NO = '1'

案例2:

WITH temp001 AS (
SELECT
	main.PL_PROJECT_MAIN_ID,
	info.PL_PLAN_INFO_ID,
	info.TASK_NAME,
	info.ORDER_NO,
	detail.BEGIN_TIME,
	detail.OVER_TIME 
FROM
	PL_PROJECT_MAIN main
	LEFT JOIN PL_PLAN_INFO info ON main.PL_PROJECT_MAIN_ID = info.PL_PROJECT_MAIN_ID 
	AND info.PARENT_ID = '0'
	LEFT JOIN PL_PLAN_DETAIL detail ON info.PL_PLAN_INFO_ID = detail.PL_PLAN_INFO_ID 
WHERE
	main.PROJECT_PHASE NOT IN ( '1', '2', '3' ) 
	AND info.ORDER_NO = '1' 
	),
	temp002 AS (
SELECT
	main.PL_PROJECT_MAIN_ID,
	info.PL_PLAN_INFO_ID,
	info.TASK_NAME,
	info.ORDER_NO,
	detail.BEGIN_TIME,
	detail.OVER_TIME 
FROM
	PL_PROJECT_MAIN main
	LEFT JOIN PL_PLAN_INFO info ON main.PL_PROJECT_MAIN_ID = info.PL_PROJECT_MAIN_ID 
	AND info.PARENT_ID = '0'
	LEFT JOIN PL_PLAN_DETAIL detail ON info.PL_PLAN_INFO_ID = detail.PL_PLAN_INFO_ID 
WHERE
	main.PROJECT_PHASE NOT IN ( '1', '2', '3' ) 
	AND info.ORDER_NO = '2' 
	),
	temp003 AS (
SELECT
	main.PL_PROJECT_MAIN_ID,
	info.PL_PLAN_INFO_ID,
	info.TASK_NAME,
	info.ORDER_NO,
	detail.BEGIN_TIME,
	detail.OVER_TIME 
FROM
	PL_PROJECT_MAIN main
	LEFT JOIN PL_PLAN_INFO info ON main.PL_PROJECT_MAIN_ID = info.PL_PROJECT_MAIN_ID 
	AND info.PARENT_ID = '0'
	LEFT JOIN PL_PLAN_DETAIL detail ON info.PL_PLAN_INFO_ID = detail.PL_PLAN_INFO_ID 
WHERE
	main.PROJECT_PHASE NOT IN ( '1', '2', '3' ) 
	AND info.ORDER_NO = '3' 
	),
	temp004 AS (
SELECT
	main.PL_PROJECT_MAIN_ID,
	info.PL_PLAN_INFO_ID,
	info.TASK_NAME,
	info.ORDER_NO,
	detail.BEGIN_TIME,
	detail.OVER_TIME 
FROM
	PL_PROJECT_MAIN main
	LEFT JOIN PL_PLAN_INFO info ON main.PL_PROJECT_MAIN_ID = info.PL_PROJECT_MAIN_ID 
	AND info.PARENT_ID = '0'
	LEFT JOIN PL_PLAN_DETAIL detail ON info.PL_PLAN_INFO_ID = detail.PL_PLAN_INFO_ID 
WHERE
	main.PROJECT_PHASE NOT IN ( '1', '2', '3' ) 
	AND info.ORDER_NO = '4' 
	),
	temp005 AS (
SELECT
	main.PL_PROJECT_MAIN_ID,
	info.PL_PLAN_INFO_ID,
	info.TASK_NAME,
	info.ORDER_NO,
	detail.BEGIN_TIME,
	detail.OVER_TIME 
FROM
	PL_PROJECT_MAIN main
	LEFT JOIN PL_PLAN_INFO info ON main.PL_PROJECT_MAIN_ID = info.PL_PROJECT_MAIN_ID 
	AND info.PARENT_ID = '0'
	LEFT JOIN PL_PLAN_DETAIL detail ON info.PL_PLAN_INFO_ID = detail.PL_PLAN_INFO_ID 
WHERE
	main.PROJECT_PHASE NOT IN ( '1', '2', '3' ) 
	AND info.ORDER_NO = '5' 
	) 
	
	
	
	SELECT DISTINCT
	
	        (
                CASE

                    WHEN to_char(BEGIN_TIME1,'yyyyMMdd') <= to_char(sysdate,'yyyyMMdd') AND to_char(OVER_TIME1,'yyyyMMdd') >= to_char(sysdate,'yyyyMMdd') THEN TASK_NAME1
                    WHEN to_char(BEGIN_TIME2,'yyyyMMdd') <= to_char(sysdate,'yyyyMMdd') AND to_char(OVER_TIME2,'yyyyMMdd') >= to_char(sysdate,'yyyyMMdd') THEN TASK_NAME2
                    WHEN to_char(BEGIN_TIME3,'yyyyMMdd') <= to_char(sysdate,'yyyyMMdd') AND to_char(OVER_TIME3,'yyyyMMdd') >= to_char(sysdate,'yyyyMMdd') THEN TASK_NAME3
                    WHEN to_char(BEGIN_TIME4,'yyyyMMdd') <= to_char(sysdate,'yyyyMMdd') AND to_char(OVER_TIME4,'yyyyMMdd') >= to_char(sysdate,'yyyyMMdd') THEN TASK_NAME4
                    WHEN to_char(BEGIN_TIME5,'yyyyMMdd') <= to_char(sysdate,'yyyyMMdd') AND to_char(OVER_TIME5,'yyyyMMdd') >= to_char(sysdate,'yyyyMMdd') THEN TASK_NAME5
                    END
                ) AS taskName,
								
								
	
	a.PL_PROJECT_MAIN_ID,
	a.PL_PROJECT_NAME,
	a.PL_PROJECT_NO,
	(
CASE
	
	WHEN a.PL_PROJECT_ATTRIBUTE = '1' THEN
	b.BUSI_INFO_ID 
	WHEN a.PL_PROJECT_ATTRIBUTE = '2' THEN
	c.BUSI_INFO_ID 
	WHEN a.PL_PROJECT_ATTRIBUTE = '7' THEN
	d.BUSI_INFO_ID 
	WHEN a.PL_PROJECT_ATTRIBUTE = '6' THEN
	e.BUSI_INFO_ID 
	WHEN a.PL_PROJECT_ATTRIBUTE = '3' THEN
	f.BUSI_INFO_ID 
	WHEN a.PL_PROJECT_ATTRIBUTE = '4' THEN
	g.BUSI_INFO_ID 
	WHEN a.PL_PROJECT_ATTRIBUTE = '8' THEN
	h.BUSI_INFO_ID 
	WHEN a.PL_PROJECT_ATTRIBUTE = '5' THEN
	i.BUSI_INFO_ID 
END 
	) AS busiInfoId,
	(
	CASE
			
			WHEN ( a.PROJECT_PHASE NOT IN ( '1', '2', '3', '8' ) AND a.CHANGE_STATUS NOT IN ( '5', '6' ) ) THEN
			'0' 
			WHEN ( a.PROJECT_PHASE != '8' AND a.CHANGE_STATUS = '5' ) THEN
			'1' 
			WHEN ( a.PROJECT_PHASE != '8' AND a.CHANGE_STATUS = '6' ) THEN
			'2' 
			WHEN PROJECT_PHASE = '8' THEN
			'3' 
		END 
		) AS plProjectStatus,
		j.PRO_MEMBER_ORG_ID AS sysOrgId,
		j.PRO_MEMBER_ORG_NAME AS sysOrgName,
		j.PRO_MEMBER_NAME,
		j.PRO_MEMBER_ID,
		k.CREATION_DATE,
		a.PL_PROJECT_REAL_OVER_TIME AS proOverTime,
		NVL(
			n.CALCULATE_TYPE,
		( CASE WHEN j.PRO_MEMBER_ORG_NAME = '測控中心' THEN 'B' WHEN j.PRO_MEMBER_ORG_NAME = '保障設備中心' THEN 'B' ELSE 'A' END )) AS calculateType,
		n.DELIVERY_LIMIT,
		n.CONTRACT_END,
		n.BUSI_CONTRACT_OUT_INFO_ID,
		n.ADJUST_SUM 
	FROM
		PL_PROJECT_MAIN a
		LEFT JOIN PL_PRO_INFO_TECH b ON a.PL_PROJECT_MAIN_ID = b.PL_PROJECT_MAIN_ID
		LEFT JOIN PL_PRO_INFO_REPAIR c ON a.PL_PROJECT_MAIN_ID = c.PL_PROJECT_MAIN_ID
		LEFT JOIN PL_PRO_INFO_PLANEM d ON a.PL_PROJECT_MAIN_ID = d.PL_PROJECT_MAIN_ID
		LEFT JOIN PL_PRO_INFO_MEASURE e ON a.PL_PROJECT_MAIN_ID = e.PL_PROJECT_MAIN_ID
		LEFT JOIN PL_PRO_INFO_GOODS f ON a.PL_PROJECT_MAIN_ID = f.PL_PROJECT_MAIN_ID
		LEFT JOIN PL_PRO_INFO_APP g ON a.PL_PROJECT_MAIN_ID = g.PL_PROJECT_MAIN_ID
		LEFT JOIN PL_PRO_INFO_AIRREPAIR h ON a.PL_PROJECT_MAIN_ID = h.PL_PROJECT_MAIN_ID
		LEFT JOIN PL_PRO_INFO_AIRBORNE i ON a.PL_PROJECT_MAIN_ID = i.PL_PROJECT_MAIN_ID
		LEFT JOIN PL_PRO_MEMBER j ON j.PL_PROJECT_MAIN_ID = a.PL_PROJECT_MAIN_ID 
		AND j.PRO_ROLE = 0
		LEFT JOIN WF_FLOW_CLIENT_RUN k ON j.PL_PROJECT_MAIN_ID = k.BUSINESS_KEY_
		LEFT JOIN PL_PLAN_INFO l ON l.PARENT_ID = '0' 
		AND l.PL_PROJECT_MAIN_ID = a.PL_PROJECT_MAIN_ID
		LEFT JOIN PL_PLAN_DETAIL m ON l.PL_PLAN_INFO_ID = m.PL_PLAN_INFO_ID
		LEFT JOIN PL_PRO_PAY_INFO n ON n.PL_PROJECT_MAIN_ID = a.PL_PROJECT_MAIN_ID 
		AND n.PAY_STATUS = 1
		LEFT JOIN (
		SELECT
			                        temp001.PL_PROJECT_MAIN_ID,
temp001.TASK_NAME TASK_NAME1,temp001.ORDER_NO ORDER_NO1,temp001.BEGIN_TIME BEGIN_TIME1,temp001.OVER_TIME OVER_TIME1,
temp002.TASK_NAME TASK_NAME2,temp002.ORDER_NO ORDER_NO2,temp002.BEGIN_TIME BEGIN_TIME2,temp002.OVER_TIME OVER_TIME2,
temp003.TASK_NAME TASK_NAME3,temp003.ORDER_NO ORDER_NO3,temp003.BEGIN_TIME BEGIN_TIME3,temp003.OVER_TIME OVER_TIME3,
temp004.TASK_NAME TASK_NAME4,temp004.ORDER_NO ORDER_NO4,temp004.BEGIN_TIME BEGIN_TIME4,temp004.OVER_TIME OVER_TIME4,
temp005.TASK_NAME TASK_NAME5,temp005.ORDER_NO ORDER_NO5,temp005.BEGIN_TIME BEGIN_TIME5,temp005.OVER_TIME OVER_TIME5
 
		FROM
			temp001
			LEFT JOIN temp002 ON temp001.PL_PROJECT_MAIN_ID = temp002.PL_PROJECT_MAIN_ID
			LEFT JOIN temp003 ON temp001.PL_PROJECT_MAIN_ID = temp003.PL_PROJECT_MAIN_ID
			LEFT JOIN temp004 ON temp001.PL_PROJECT_MAIN_ID = temp004.PL_PROJECT_MAIN_ID
			LEFT JOIN temp005 ON temp001.PL_PROJECT_MAIN_ID = temp005.PL_PROJECT_MAIN_ID 
		) temp ON a.PL_PROJECT_MAIN_ID = temp.PL_PROJECT_MAIN_ID 
	WHERE
		a.PROJECT_PHASE NOT IN ( '1', '2', '3' ) 
	ORDER BY
	nlssort( a.PL_PROJECT_NAME, 'NLS_SORT = SCHINESE_PINYIN_M' ),
a.PL_PROJECT_NO

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Oracle Max函數(shù)使用中出現(xiàn)的問題

    Oracle Max函數(shù)使用中出現(xiàn)的問題

    在Oracle Max函數(shù)使用中,會出現(xiàn)一些問題,本文將介紹解決方法,需要的朋友可以了解下
    2012-11-11
  • Oracle基礎學習之子查詢

    Oracle基礎學習之子查詢

    所謂子查詢就是當一個查詢的結果是另一個查詢的條件時,稱之為子查詢。本文給大家詳細的介紹了關于Oracle中子查詢的相關知識,文中的內(nèi)容也算是自己的一些學習筆記,希望對有需要的朋友們能有所幫助,感興趣的朋友們下面來一起看看吧。
    2016-11-11
  • oracle數(shù)據(jù)庫索引失效的問題及解決

    oracle數(shù)據(jù)庫索引失效的問題及解決

    本文總結了在Oracle數(shù)據(jù)庫中索引失效的一些常見場景,包括使用isnull、isnotnull、!=、<、>、函數(shù)處理、like前置%查詢以及范圍索引和等值索引同時存在等情況,通過實際的SQL查詢驗證,展示了索引失效的原因,并給出了相應的優(yōu)化建議
    2025-01-01
  • Oracle數(shù)據(jù)庫創(chuàng)建存儲過程的示例詳解

    Oracle數(shù)據(jù)庫創(chuàng)建存儲過程的示例詳解

    這篇文章主要介紹了Oracle數(shù)據(jù)庫創(chuàng)建存儲過程的示例詳解,存儲過程是事先經(jīng)過編譯并存儲在數(shù)據(jù)庫中的一段SQL語句的集合,調(diào)用存儲過程可以簡化應用開發(fā)人員的很多工作。對此感興趣可以了解一下
    2020-07-07
  • Oracle數(shù)據(jù)庫密碼重置、導入導出庫命令示例應用

    Oracle數(shù)據(jù)庫密碼重置、導入導出庫命令示例應用

    本節(jié)主要介紹了Oracle數(shù)據(jù)庫密碼重置、導入導出庫命令的基本使用,有需要的朋友可以學習下
    2014-07-07
  • Oracle如何直接運行OS命令(上)

    Oracle如何直接運行OS命令(上)

    Oracle如何直接運行OS命令(上)...
    2007-03-03
  • oracle中的trim函數(shù)使用介紹

    oracle中的trim函數(shù)使用介紹

    trim一般都是用在刪除字符串兩邊的空格。實際上,trim也可以用來刪除字符串兩邊的指定字符。并且trim指定刪除的字符串只能是單個字符
    2014-08-08
  • Oracle19c安裝與基本配置教程(超詳細!)

    Oracle19c安裝與基本配置教程(超詳細!)

    oracle19c數(shù)據(jù)庫安裝相對于oracle12c安裝還是有些不一樣的,所以今天再來記錄一下安裝過程,下面這篇文章主要給大家介紹了關于Oracle19c安裝與基本配置的超詳細教程,需要的朋友可以參考下
    2023-01-01
  • Oracle數(shù)據(jù)庫數(shù)據(jù)丟失恢復的幾種方法總結

    Oracle數(shù)據(jù)庫數(shù)據(jù)丟失恢復的幾種方法總結

    相信大家無論是開發(fā)、測試還是運維過程中,都可能會因為誤操作、連錯數(shù)據(jù)庫、用錯用戶、語句條件有誤等原因,導致錯誤刪除、錯誤更新等問題。當你捶胸頓足或嚇得腿軟時,肯定希望有辦法來恢復這些數(shù)據(jù)。oracle就提供了一些強大的方法或機制,可以幫到有需要的你。
    2016-12-12
  • oracle 函數(shù)

    oracle 函數(shù)

    oracle 函數(shù)...
    2007-03-03

最新評論

沂源县| 湘潭县| 霍城县| 岚皋县| 汪清县| 筠连县| 绥阳县| 临武县| 伊宁县| 丰都县| 云梦县| 河南省| 务川| 屯门区| 和硕县| 丽水市| 会昌县| 隆化县| 罗山县| 出国| 新郑市| 铜梁县| 肥东县| 临夏县| 响水县| 临朐县| 柘城县| 中西区| 南昌县| 通海县| 肃南| 洪湖市| 达日县| 南投县| 清流县| 云安县| 九龙县| 怀远县| 青州市| 潼南县| 丁青县|