【正文】
ORACLE基礎(chǔ) 一、基本查詢語句 SELECT FROM WHERE GROUP BY HAVING ORDER BY ORACLE基礎(chǔ) 二、函數(shù) 處理 null值 NVL(M,N) 字符串連接 || 查找子串位置 INSTR(原串 ,子串 ,從第 n個字符開始 ) 取子串 SUBSTR(原串 ,起始位置 ,取字符位數(shù) ) ORACLE基礎(chǔ) 二、函數(shù) 日期轉(zhuǎn)換為字符串 :yyyymmdd hh:mi:ss TO_CHAR(表達(dá)式 ,39。YYYYMMDD HH:MI:SS39。) 日期轉(zhuǎn)換為字符串 :yyyymmdd― TO_CHAR(表達(dá)式 ,‘YYYYMMDD’)― 日期轉(zhuǎn)換為字符串 :hh:mi:ss― TO_CHAR(表達(dá)式 ,39。HH:MI:SS39。) ORACLE基礎(chǔ) 二、函數(shù) 字符串轉(zhuǎn)換為日期 TO_DATE(表達(dá)式 ,39。YYYYMMDD HH:MI:SS39。) TO_DATE(表達(dá)式 ,39。YYYYMMDD39。) 數(shù)值轉(zhuǎn)字符串 TO_CHAR(表達(dá)式 ) 字符串轉(zhuǎn)數(shù)值 TO_NUMBER(表達(dá)式 ) ORACLE基礎(chǔ) 二、函數(shù) 1 表達(dá)式判斷取值 case when 條件表達(dá)式 1 then 結(jié)果式 1 when 條件表達(dá)式 2 then 結(jié)果式 2... else 39。結(jié)果式 n39。 end decode(字段,第一個判斷值,第一個結(jié)果,第二個判斷值,第二個結(jié)果,否則的結(jié)果 ) 二 ORACLE基礎(chǔ) 三、連接 內(nèi)聯(lián) (自然連接 ) : select * from a , b where = select * from a inner join b on = ORACLE基礎(chǔ) 三、連接 外接: 左接 (左外連 ) select * from a , b where = (+) select * from a left join b on = 右接 (右外連 ) select * from a , b where (+) = select * from b right join a on = ORACLE基礎(chǔ) 三、連接 全連: select * from a full join b on = 四、笛卡爾積 select * from a , b ORACLE基礎(chǔ) 三、連接 自連: select a.* from AAA a, AAA b on = ORACLE基礎(chǔ) 四、合并數(shù)據(jù) UNION 合并去重復(fù) UNION ALL 合并不去重復(fù) ORACLE基礎(chǔ) 五、觸發(fā)器 概述: 觸發(fā)器是特定事件出現(xiàn)的時(shí)候,自動執(zhí)行的代碼塊。類似于存儲過程,但是用戶不能直接調(diào)用他們。 ORACLE觸發(fā)器語法 觸發(fā)器有兩種 after和 before,區(qū)別在于每次提交事務(wù)觸發(fā)一次和每一行數(shù)據(jù)的更新都觸發(fā)一次 ORACLE基礎(chǔ) 五、觸發(fā)器 語法: ORACLE產(chǎn)生數(shù)據(jù)庫觸發(fā)器的語法為: create [or replace] trigger 觸發(fā)器名 觸發(fā)時(shí)間 觸發(fā)事件 on 表名 [for each row] pl/sql 語句 ORACLE基礎(chǔ) 五、觸發(fā)器 語法: create or replace trigger aaaa before insert on a for each row declare local variables here begin insert into aa(a,b)values(39。99939。,39。99939。)。 end aaaa。 ORACLE基礎(chǔ) 五、觸發(fā)器 語法: 1)、觸發(fā)器名:觸發(fā)器對象的名稱。 2)、觸發(fā)時(shí)間:指明觸發(fā)器何時(shí)執(zhí)行,該值可取, before表示在數(shù)據(jù)庫動作之前觸發(fā)器執(zhí)行; after表示在數(shù)據(jù)庫動作之后出發(fā)器執(zhí)行。 ORACLE基礎(chǔ) 五、觸發(fā)器 語法: 觸發(fā)事件:指明哪些數(shù)據(jù)庫動作會觸發(fā)此觸發(fā)器: insert:數(shù)據(jù)庫插入會觸發(fā)此觸發(fā)器; update:數(shù)據(jù)庫修改會觸發(fā)此觸發(fā)器; delete:數(shù)據(jù)庫刪除會觸發(fā)此觸發(fā)器。 表 名:數(shù)據(jù)庫觸發(fā)器所在的表。 for each row:對表的每一行觸發(fā)器執(zhí)行一次。如果沒有這一 選項(xiàng),則只對整個表執(zhí)行一次。 ORACLE基礎(chǔ) 五、觸發(fā)器 例子: 例子 1:插入主鍵 CREATE OR REPLACE TRIGGER A_ BEFORE INSERT ON A FOR EACH ROW DECLARE BEGIN SELECT INTO : FROM DUAL。 END A_。 ORACLE基礎(chǔ) 例子 2: CREATE OR REPLACE TRIGGER ADDB2B_GHDWUSER AFTER INSERT ON B2B_GHDWUSER FOR EACH ROW DECLARE V_MENUID %TYPE。 _MENUID VARCHAR2(20)。 CURSOR INSERTUMENU IS SELECT FROM B2B_GHJBMENU A,XTGHDW B WHERE = AND = :。 V_LXBM %TYPE。 CURSOR INSERTLXBM IS SELECT DISTINCT LXBM FROM XTFBLX。 ORACLE基礎(chǔ) BEGIN _MENUID:=‘1111111’。 OPEN INSERTUMENU。 FETCH INSERTUMENU INTO V_MENUID,_MENUID。 WHILE INSERTUMENU%FOUND LOOP INSERT INTO B2B_USERMENU (USERBM,MENUID) VALUES(:,V_MENUID)。 FETCH INSERTUMENU INTO V_MENUID。 END LOOP。 CLOSE INSERTUMENU。 OPEN INSERTLXBM。 FETCH INSERTLXBM INTO V_LXBM。 WHILE INSERTLXBM%FOUND LOOP INSERT INTO B2B_USERXX (USERBM,LXBM) VALUES(:,V_LXBM)。 FETCH INSERTLXBM INTO V_LXBM。 END LOOP。 CLOSE INSERTLXBM。 ORACLE基礎(chǔ) IF :=39。239。 AND : = 39。039。 THEN BEGIN SELECT TID,FUSED INTO L_ID,L_FUSED FROM RPC_CONTRAC WHERE HTBM = : AND HTLB 39。939。 IF L_FUSED=1 THEN RAISE_APPLICATION_ERROR(20215,39。不能刪除 !39。)。 END IF。 DELETE RPC_CONTRACENTRY WHERE TID = L_ID。 DELETE RPC_CONTRAC WHERE TID = L_ID。 EXCEPTION WHEN NO_DATA_FOUND THEN NULL。 END。 END IF。 END ADDB2B_GHDWUSER 。 ORACLE基礎(chǔ) 例子 2: CREATE OR REPLACE TRIGGER ADDB2B_GHDWUSER AFTER INSERT ON B2B_GHDWUSER FOR EACH ROW DECLARE V_MENUID %TYPE。 _MENUID VARCHAR2(20)。 CURSOR INSERTUMENU IS SELECT FROM B2B_GHJBMENU A,XTGHDW B WHERE = AND = :。 V_LXBM %TYPE。 CURSOR INSERTLXBM IS SELECT DISTINCT LXBM FROM XTFBLX。 ORACLE基礎(chǔ) 循環(huán) 1 i :=1。 loop insert into tb_zhaozhenlong(rpt_date ,dept_id,item,qty) values(to_date(39。2021010139。,39。yyyyMMdd39。),39。D39。||i,39。I39。||i,round(i*100/3,3))。 exit when i =10。 i :=i+1。 end loop。 ORACLE基礎(chǔ) 循環(huán) 2 i :=1。 while i=5 loop i :=i+1。 end loop。 ORACLE基礎(chǔ) 循環(huán) 3 如果指定了 reverse選項(xiàng),則循環(huán)控制變量會自動減 1,否則自動加 1 for j in reverse 1..10 loop end loop。 ORACLE基礎(chǔ) 循環(huán) 3 for x in 1..10 loop end loop。 ORACLE基礎(chǔ) 例子 2: CREATE OR REPLACE TRIGGER ADDB2B_GHDWUSER AFTER INSERT ON B2B_GHDWUSER FOR EACH ROW DECLARE V_MENUID %TYPE。 _MENUID VARCHAR2(20)。 CURSOR INSERTUMENU IS