资源预览内容
第1页 / 共126页
第2页 / 共126页
第3页 / 共126页
第4页 / 共126页
第5页 / 共126页
第6页 / 共126页
第7页 / 共126页
第8页 / 共126页
第9页 / 共126页
第10页 / 共126页
亲,该文档总共126页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
ORACLE基础,一、基本查询语句 SELECT FROM WHERE GROUP BY HAVING ORDER BY,ORACLE基础,二、函数 1、处理null值 NVL(M,N) 2、字符串连接 | 3、查找子串位置 INSTR(原串,子串,从第n个字符开始) 4、取子串 SUBSTR(原串,起始位置,取字符位数),ORACLE基础,二、函数 5、“日期转换为字符串:yyyy-mm-dd hh:mi:ss“ TO_CHAR(表达式,YYYY-MM-DD HH:MI:SS) “ 6、日期转换为字符串:yyyy-mm-dd“ TO_CHAR(表达式,YYYY-MM-DD)“ 7、日期转换为字符串:hh:mi:ss“ TO_CHAR(表达式,HH:MI:SS),ORACLE基础,二、函数 8、字符串转换为日期 TO_DATE(表达式,YYYY-MM-DD HH:MI:SS) TO_DATE(表达式,YYYY-MM-DD) 9、数值转字符串 TO_CHAR(表达式) 10、字符串转数值TO_NUMBER(表达式),ORACLE基础,二、函数 11、表达式判断取值 “case when 条件表达式1 then 结果式1 when 条件表达式2 then 结果式2. else 结果式n end“ decode(字段,第一个判断值,第一个结果,第二个判断值,第二个结果,否则的结果),二,ORACLE基础,三、连接 1、内联(自然连接) : select * from a , b where a.id=b.id select * from a inner join b on a.id=b.id,ORACLE基础,三、连接 2、外接: 左接(左外连) select * from a , b where a.id =b.id (+) select * from a left join b on a.id=b.id 右接(右外连) select * from a , b where b.id(+) = a.id select * from b right join a on a.id = b.id,ORACLE基础,三、连接 3、全连: select * from a full join b on a.id=b.id 四、笛卡尔积 select * from a , b,ORACLE基础,三、连接 4、自连: select a.* from AAA a, AAA b on a.id=b.id,ORACLE基础,四、合并数据 UNION 合并去重复 UNION ALL 合并不去重复,ORACLE基础,五、触发器 1、概述: 触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。 ORACLE触发器语法 触发器有两种after和before,区别在于每次提交事务触发一次和每一行数据的更新都触发一次,ORACLE基础,五、触发器 2、语法: ORACLE产生数据库触发器的语法为: create or replace trigger 触发器名 触发时间 触发事件 on 表名 for each row pl/sql 语句,ORACLE基础,五、触发器 2、语法: create or replace trigger aaaa before insert on a for each row declare - local variables here begin insert into aa(a,b)values(999,999); end aaaa;,ORACLE基础,五、触发器 2、语法: 1)、触发器名:触发器对象的名称。 2)、触发时间:指明触发器何时执行,该值可取, before-表示在数据库动作之前触发器执行; after-表示在数据库动作之后出发器执行。,ORACLE基础,五、触发器 2、语法: 3、触发事件:指明哪些数据库动作会触发此触发器: insert:数据库插入会触发此触发器; update:数据库修改会触发此触发器; delete:数据库删除会触发此触发器。 4、表 名:数据库触发器所在的表。 5、 for each row:对表的每一行触发器执行一次。如果没有这一 选项,则只对整个表执行一次。,ORACLE基础,五、触发器 3、例子: 例子1:插入主键 CREATE OR REPLACE TRIGGER A_ BEFORE INSERT ON A FOR EACH ROW DECLARE BEGIN SELECT AA_SEQ.NEXTVAL INTO :NEW.A FROM DUAL; END A_;,ORACLE基础,例子2: CREATE OR REPLACE TRIGGER ADDB2B_GHDWUSER AFTER INSERT ON B2B_GHDWUSER FOR EACH ROW DECLARE V_MENUID B2B_GHJBMENU.MENUID%TYPE; _MENUID VARCHAR2(20); CURSOR INSERTUMENU IS SELECT A.MENUID FROM B2B_GHJBMENU A,XTGHDW B WHERE A.JNAM = B.JB AND B.DWBM= :NEW.GHDWBM; V_LXBM XTFBLX.LXBM%TYPE; CURSOR INSERTLXBM IS SELECT DISTINCT LXBM FROM XTFBLX;,ORACLE基础,BEGIN _MENUID:=1111111; OPEN INSERTUMENU; FETCH INSERTUMENU INTO V_MENUID,_MENUID; WHILE INSERTUMENU%FOUND LOOP INSERT INTO B2B_USERMENU (USERBM,MENUID) VALUES(:NEW.USERBM,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(:NEW.USERBM,V_LXBM); FETCH INSERTLXBM INTO V_LXBM; END LOOP; CLOSE INSERTLXBM;,ORACLE基础,IF :OLD.SWBZ=2 AND :NEW.SWBZ = 0 THEN BEGIN SELECT TID,FUSED INTO L_ID,L_FUSED FROM RPC_CONTRAC WHERE HTBM = :NEW.HTBM AND HTLB 9; IF L_FUSED=1 THEN RAISE_APPLICATION_ERROR(-20005,不能删除!); 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基础,例子2: CREATE OR REPLACE TRIGGER ADDB2B_GHDWUSER AFTER INSERT ON B2B_GHDWUSER FOR EACH ROW DECLARE V_MENUID B2B_GHJBMENU.MENUID%TYPE; _MENUID VARCHAR2(20); CURSOR INSERTUMENU IS SELECT A.MENUID FROM B2B_GHJBMENU A,XTGHDW B WHERE A.JNAM = B.JB AND B.DWBM= :NEW.GHDWBM; V_LXBM XTFBLX.LXBM%TYPE; CURSOR INSERTLXBM IS SELECT DISTINCT LXBM FROM XTFBLX;,ORACLE基础,循环1 i :=1; loop insert into tb_zhaozhenlong(rpt_date ,dept_id,item,qty) values(to_date(2007-01-01,yyyy-MM-dd),D|i,I|i,round(i*100/3,3); exit when i =10; i :=i+1; end loop;,ORACLE基础,循环2 i :=1; while i=5 loop i :=i+1; end loop;,ORACLE基础,循环3 -如果指定了reverse选项,则循环控制变量会自动减1,否则自动加1 for j in reverse 110 loop end loop;,ORACLE基础,循环3 for x in 110 loop end loop;,ORACLE基础,例子2: CREATE OR REPLACE TRIGGER ADDB2B_GHDWUSER AFTER INSERT ON B2B_GHDWUSER FOR EACH ROW DECLARE V_MENUID B2B_GHJBMENU.MENUID%TYPE; _MENUID VARCHAR2(20); CURSOR INSERTUMENU IS SELECT A.MENUID FROM B2B_GHJBMENU A,XTGHDW B WHERE A.JNAM = B.JB AND B.DWBM= :NEW.GHDWBM; V_LXBM XTFBLX.LXBM%TYPE; CURSOR INSERTLXBM IS SELECT DISTINCT LXBM FROM XTFBLX;,ORACLE基础,六、存储过程 1、语法: 存储过程: 例子1: CREATE OR REPLACE PROCEDURE “P_BJHHTED“ -输入、输出参数 ( AS_USER VARCHAR2, AD_RQ1 DATE, AD_RQ2 DATE) AS,ORACLE基础,六、存储过程 1、语法: -定义变量 LS_GW VARCHAR2(8); LS_SPR VARCHAR2(10); LS_KS VARCHAR2(4); LD_SL1 NUMBER(14,4); LD_JE1 NUMBER(14,4); LD_SL2 NUMBER(14,4); LD_JE2 NUMBER(14,4); LD_SL3 NUMBER(14,4);,ORACLE基础,六、存储过程 1、语法: -定义变量 LD_JE3 NUMBER(14,4); LD_SL4 NUMBER(14,4); LD_JE4 NUMBER(14,4); LD_SL5 NUMBER(14,4); LD_JE5 NUMBER(14,4); LD_SL6 NUMBER(14,4); LD_JE6 NUMBER(14,4);,ORACLE基础,六、存储过程 1、语法: -定义游标 CURSOR C1 IS SELECT HTGW,KSJC,SPR FROM BJHHTED WHERE ZDR=AS_USER FOR UPDATE;,ORACLE基础,六、存储过程 1、语法: -开始执行存储过程 BEGIN -
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号