多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > Oracel 10g 中創建觸發器的臨時表是什么

Oracel 10g 中創建觸發器的臨時表是什么

來源:程序員人生   發布時間:2014-04-02 00:28:09 閱讀次數:3314次

問題:

Oracel 10g 中 創建觸發器時 臨時表是???

CREATE OR REPLACE TRIGGER receivedBook_insert_update
BEFORE INSERT OR UPDATE
ON t_leoa_ReceivedBook
FOR EACH ROW
BEGIN
DECLARE LandNo VARCHAR2(100)
SELECT t_leoa_ReceivedBook.LandInfo_LandNo FROM Dual -- 臨時表

IF LandInfo_LandNo !:= NULL THEN
SELECT LandNo := LandInfo_LandNo FROM t_leoa_BookFlow
WHERE t_leoa_ReceivedBook.LandInfo_LandNo

IF LandNo !:= NULL THEN
UPDATE t_leoa_BookFlow SET LandInfo_LandNo := LandNo+1 WHERE
Flow_ID := (SELECT FLOW_ID FROM t_leoa_BookFlow WHERE LandInfo_LandNo := LandNo)
ELSIF
INSERT INTO t_leoa_BookFlow VALUES(1,FLOW_CURCIRINDEX,FLOW_RECTIME,FLOW_APPLYTIME,
FLOW_REASEARCHTIME,FLOW_FIRSTAUDITTIME,FLOW_BULLETINTIME,FLOW_LASTAUDITTIME,FLOW_REGISTERTIME,
FLOW_SHANZHENGTIME,FLOW_ISSUELANDCERTIFYTIME,FLOW_FTPFOLDERNAME,FLOW_FLAG,LandInfo_LandNo)
END BEFORE ReceivedBook_insert_update;

調試一天還出錯 麻煩高手 幫幫忙 多謝啦!

問題補充:---------收件單觸發器
CREATE OR REPLACE TRIGGER tib_Leoa_ReceivedBook
BEFORE INSERT OR UPDATE ON t_Leoa_ReceivedBook
FOR EACH ROW
DECLARE
land_no VARCHAR2(50); --存儲地籍號
del_flag Integer; --檢測刪除標志
total Integer; --存儲、判斷獲取值
rec_date date; --記錄收件時的日期
add_value integer; --當前操作需要增加或者刪除的值
BEGIN
/*賦予默認值*/
del_flag := 0;
land_no := '';
add_value := 1; --根據對應環節不同該值而不同

/*從臨時表DUAL獲取刪除標志存儲在del_flag 中*/
SELECT :new.Received_Flag INTO del_flag FROM DUAL;
/*從臨時表DUAL獲取的地籍號存儲在land_no中,*/
SELECT :new.Landinfo_Landno INTO land_no FROM DUAL;
/*從臨時表DUAL獲取的收件日期存儲在rec_date中,*/
SELECT :new.Received_ReceivedTime INTO rec_date FROM DUAL;

/*通過LandNo從流程表中檢測流程信息表中是否含有該條記錄的流程信息*/
/*flow_flag=-1表示該條記錄在流程信息表已被邏輯刪除,不再參與實際事務*/
SELECT COUNT(*) INTO total FROM t_leoa_BookFlow t
WHERE t.LandInfo_LandNo = land_no AND t.flow_flag <> -1;

/*如果在流程信息表中有關于該條記錄的流程信息*/
IF total >= 1 THEN
/*開始判斷當前的操作是INSERT還是UPDATE*/
IF inserting THEN
UPDATE t_leoa_BookFlow SET Flow_ProcessValue = Flow_ProcessValue + add_value
WHERE LandInfo_LandNo = land_no AND Flow_flag <> -1;
ELSE
/*如果是UPDATE操作*/
IF(updating and (del_flag = -1)) THEN
UPDATE t_leoa_BookFlow SET Flow_ProcessValue = Flow_ProcessValue - add_value
WHERE LandInfo_LandNo = land_no AND Flow_flag <> -1;
END IF;
END IF;
ELSE
/*如果流程信息表中不存在當前的記錄*/
INSERT INTO t_leoa_BookFlow
values(0,add_value,null,rec_date,null,null,null,null,null,null,null,null,null,del_flag,land_no);
END IF;
END;

回答:

Oracle 中沒有臨時表。

在 Oracle 觸發器中,:new 表示新的行, :old 表示原來舊的行,這兩個變量是系統定義的,可以直接使用。

它們的類型都是記錄型,通過與列同名的屬性來訪問字段的值。

例如,表中有一列為 Name,那么,在刪除或者更新時,訪問原來舊的值使用 :old.name,在插入,或者更新的時候訪問新的值,使用 :new.name 就可以了。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产精品久久久久影视不卡 | 性做久久久久久免费观看 | 午夜免费网站 | 综合天堂 | yellow中文字幕在线 | 国产综合图片 | 国产麻豆视频在线观看 | 午夜影院色 | 国外处破女一区二区 | 午夜在线观看视频在线播放版 | 91精品国产福利在线观看性色 | 一区二区三区四区国产 | 国产精品免费麻豆入口 | 男女免费观看在线爽爽爽视频 | 性欧美video另类hd | 国产精品久久久亚洲456 | 欧美一级在线观看视频 | 欧美14videosex性欧美成人 | 亚洲无砖砖区免费 | 国产清纯91天堂在线观看 | 手机看片高清国产日韩片 | 日韩一级精品视频在线观看 | 亚洲嫩草影院久久精品 | 456亚洲人成影院在线观 | 女同舌吻janpan | 碰超丶在线免费 | 欧美日本免费一区二区三区 | 最近中文字幕国语免费完整 | 久久这里只有精品9 | 午夜dj免费视频观看社区 | 俄罗斯freexxxx性 | 亚洲国产成人久久一区二区三区 | 痴汉电车在线看 | www.av在线| 亚洲欧美日韩小说 | 男女视频在线观看免费 | 国产成人啪午夜精品网站男同 | 国产欧美另类久久精品91 | 欧美一级视频在线高清观看 | 国产福利一区在线 | 91嫩草国产在线观看免费 |