某电力公司oracle培训教材29430.pptx
《某电力公司oracle培训教材29430.pptx》由会员分享,可在线阅读,更多相关《某电力公司oracle培训教材29430.pptx(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ORACLE入门 PL/SQL语言篇技术支持部 汤庆锋福州磬基电子有限公司本课程学习内容本课程学习内容PL/SQLPL/SQL简介简介PL/SQLPL/SQL数据类型数据类型(ORACLE(ORACLE的数据类型的数据类型)ORACLORACL内置的内置的SQLSQL函数函数PL/SQLPL/SQL中使用中使用SQLSQLPL/SQLPL/SQL中游标的使用中游标的使用动态动态PL/SQLPL/SQLPL/SQLPL/SQL的异常处理的异常处理PL/SQLPL/SQL简介简介 PL/SQL(Procedural Language/SQL)PL/SQL(Procedural Language/S
2、QL)即模块化的程序设计语言,用于从各即模块化的程序设计语言,用于从各种环境中访问种环境中访问ORACLEORACLE数据库。它具备了许多数据库。它具备了许多SQLSQL中所没有的过程化属性方面中所没有的过程化属性方面的特点。主要包括:的特点。主要包括:变量和类型变量和类型控制结构(条件语句、循环语句控制结构(条件语句、循环语句)过程、函数过程、函数游标游标异常处理异常处理PL/SQLPL/SQL程序的用途程序的用途无名块无名块就是没有命名的就是没有命名的PL/SQLPL/SQL块,它可以嵌入某一个应用之中块,它可以嵌入某一个应用之中.存储过程、函数存储过程、函数也就是命名了的也就是命名了的P
3、L/SQLPL/SQL块,它可以接收参数,并且可以重复的被调用。块,它可以接收参数,并且可以重复的被调用。触发器触发器是与数据库中的表相关的是与数据库中的表相关的PL/SQLPL/SQL块,可以自动的触发。块,可以自动的触发。包包命名了的命名了的PL/SQLPL/SQL块,由一组相关的过程、函数和标识符组成。块,由一组相关的过程、函数和标识符组成。PL/SQLPL/SQL的程序结构的程序结构 PL/SQLPL/SQL的基本单位是的基本单位是“块块”(”(Block)Block)。所有的所有的PL/SQLPL/SQL程序都是由一个或程序都是由一个或多多个个PL/SQLPL/SQL块构成的,这些块
4、可以相互进行嵌套。通常一个块完成程序的一个块构成的,这些块可以相互进行嵌套。通常一个块完成程序的一个单元的工作。一个基本的块由三个部分组成:单元的工作。一个基本的块由三个部分组成:定义部分定义部分定义变量、常量、游标、异常处理定义变量、常量、游标、异常处理可执行部分可执行部分 包括对数据库进行操作的包括对数据库进行操作的SQLSQL语句,以及语句,以及对块中的语句进行组织、控制的对块中的语句进行组织、控制的PL/SQLPL/SQL语句。语句。异常处理(异常处理(Exception)Exception)部分部分可执行部分中的语句,在执行过程中可执行部分中的语句,在执行过程中出错或出现非正常现象时
5、,所做的响应出错或出现非正常现象时,所做的响应处理处理DECLAREBEGINEXCEPTIONENDPL/SQL块结构块结构PL/SQLPL/SQL数据类型数据类型PL/SQLPL/SQL数据类型数据类型常用的数据类型常用的数据类型CHARCHAR:存放固定长度的字符串存放固定长度的字符串VARCHAR2VARCHAR2:存放可变长度的字符串存放可变长度的字符串NUMBERNUMBER:存放存放0 0、正负数、浮点数、正负数、浮点数DATEDATE:存放时间数据(包括日期和时间)存放时间数据(包括日期和时间)LONGLONG:存放变长字符串。一般用来存储大文本存放变长字符串。一般用来存储大文
6、本RAW LONG RAW LONG 存放多媒体数据存放多媒体数据,如声音、图片如声音、图片例如:创建一雇员表例如:创建一雇员表CREATE TABLE empCREATE TABLE emp(empno number(4),empno number(4),ename varchar2(10),ename varchar2(10),hiredate date,hiredate date,sal number(7,2),sal number(7,2),deptno number(2)deptno number(2););ORACLEORACLE内置的内置的SQLSQL函数函数 SQLSQL函数按
7、照传入参数的类型,可分为字符串函数、数值函数、日期函数、函数按照传入参数的类型,可分为字符串函数、数值函数、日期函数、其他函数。以下分别列举较常用的部分进行说明其他函数。以下分别列举较常用的部分进行说明。字符串函数:字符串函数:UPPER(s)UPPER(s)将字符串将字符串ss转换成大写的形式返回。转换成大写的形式返回。LOWER(s)LOWER(s)将字符串将字符串ss转换成小写的形式返回。转换成小写的形式返回。SUBSTR(s,a,b)SUBSTR(s,a,b)返回从字符位置返回从字符位置a a开始有开始有b b个字符长的个字符长的ss的一部分。的一部分。若若a a为正数为正数:从左边向
8、右边计算从左边向右边计算若若a a为负数为负数:从右边向左边计算从右边向左边计算实例:实例:Select substr(abcdefg123,4)from dual;Select substr(abcdefg123,4)from dual;结果返回:结果返回:defg123defg123Select substr(abcdefg123,4,2)from dual;Select substr(abcdefg123,4,2)from dual;结果返回:结果返回:dedeSelect substr(abcdefg123,-4,2)from dual;Select substr(abcdefg123
9、,-4,2)from dual;结果返回:结果返回:g1g1RTRIM(s1,s2)RTRIM(s1,s2)返回删除从最右边算起出现在返回删除从最右边算起出现在s2s2中的字符的中的字符的s1s1。s2s2缺省为空格缺省为空格实例:实例:Select rtrim(aabbccdd,cd)from dual;Select rtrim(aabbccdd,cd)from dual;结果返回:结果返回:aabbaabb Select rtrim(aabbccdd,dc)from dual;Select rtrim(aabbccdd,dc)from dual;结果返回:结果返回:aabbaabbORAC
10、LORACL内置的内置的SQLSQL函数函数Concat(s1,s2)Concat(s1,s2)返回串接上返回串接上s2s2之后的之后的s1.s1.该函数与该函数与|运算符作用相同。运算符作用相同。实例:实例:select concat(abc,def)from dual;select concat(abc,def)from dual;返回结果:返回结果:abcdefabcdef select abc|def from dual;select abc|def from dual;返回结果:返回结果:abcdefabcdefLength(s)Length(s)以字节为单位返回字符串以字节为单位返
11、回字符串s s的长度。的长度。ORACLORACL内置的内置的SQLSQL函数函数数值函数数值函数Ceil(n)Ceil(n)返回大于或等于返回大于或等于n n的整数的整数Select ceil(18.6),ceil(-18.6)from dual;Select ceil(18.6),ceil(-18.6)from dual;Floor(n)Floor(n)返回小于或等于返回小于或等于n n的整数的整数Select floor(18.6),floor(-18.6)from dual;Select floor(18.6),floor(-18.6)from dual;Mod(x,y)Mod(x,y
12、)返回返回x x除以除以y y得余数,若得余数,若y y为为0 0,则返回,则返回x x。Select mod(23,5),mod(4,1.3)from dual;Select mod(23,5),mod(4,1.3)from dual;返回结果:返回结果:1.1,1.1,0.10.1Round(x,y)Round(x,y)返回舍入到小数点右边返回舍入到小数点右边y y为的为的x x值。值。Select round(1.56),round(1.56,1),round(123.4,-1)Select round(1.56),round(1.56,1),round(123.4,-1)from du
13、al;from dual;返回结果:返回结果:1.1,1.1,0.1,1200.1,120ORACLORACL内置的内置的SQLSQL函数函数日期函数日期函数SysdateSysdate返回当前的日期和时间返回当前的日期和时间Add_months(D,x)Add_months(D,x)Last_day(D)Last_day(D)返回日期返回日期D D的月份的最后一天的日期的月份的最后一天的日期Months_Between(D1,D2)Months_Between(D1,D2)返回在返回在D1D1和和D2D2之间月的数目之间月的数目。Trunc(D,format)Trunc(D,format)返
14、回结尾由返回结尾由formatformat指定的单位的日期。指定的单位的日期。示例:示例:Select trunc(sysdate,year)from dual;Select trunc(sysdate,year)from dual;返回今年的第一天返回今年的第一天Select trunc(sysdate,mm)from dual;Select trunc(sysdate,mm)from dual;返回本月的第一天返回本月的第一天Select trunc(sysdate,D)from dual;Select trunc(sysdate,D)from dual;返回本周的第一天返回本周的第一天O
15、RACLORACL内置的内置的SQLSQL函数函数转换函数转换函数To_char(DTo_char(D,format)format)将日期转换为指定格式的字符串。将日期转换为指定格式的字符串。示例:示例:Select to_char(sysdate,yyyy/mm/dd hh:mi:ss)from dual;Select to_char(sysdate,yyyy/mm/dd hh:mi:ss)from dual;To_Date(string,format)To_Date(string,format)将字符串转换成日期格式将字符串转换成日期格式示例:示例:Select to_date(2000/
16、10/01,yyyy/mm/dd)from dual;Select to_date(2000/10/01,yyyy/mm/dd)from dual;Last_day(D)Last_day(D)返回日期返回日期D D的月份的最后一天的日期的月份的最后一天的日期To_Number(string,format)To_Number(string,format)ORACLORACL内置的内置的SQLSQL函数函数其它函数其它函数Nvl(a,b)Nvl(a,b)空值替换函数,若空值替换函数,若a a为空,则替换成为空,则替换成b b。示例:示例:Select ename,sal,sal+nvl(comm,
17、0)from dual;Select ename,sal,sal+nvl(comm,0)from dual;DECODE(DECODE(条件条件,值值1,1,翻译值翻译值1,1,值值2,2,翻译值翻译值2,.2,.值值n,n,翻译值翻译值n,n,缺省值缺省值)该函数的含义如下:该函数的含义如下:IF IF 条件条件=值值1 1 THEN THEN RETURN(RETURN(翻译值翻译值1)1)ELSIF ELSIF 条件条件=值值2 2 THEN THEN RETURN(RETURN(翻译值翻译值2)2).ELSIF ELSIF 条件条件=值值n THEN n THEN RETURN(RET
18、URN(翻译值翻译值n)n)ELSE ELSE RETURN(RETURN(缺省值缺省值)END IF END IF PL/SQLPL/SQL的注释的注释 注释增强了可阅读性,使得程序更易于理解。注释增强了可阅读性,使得程序更易于理解。单行注释单行注释-commentcomment多行注释多行注释/*/*comment*/comment*/注意:此注释不能作用在注意:此注释不能作用在SQLSQL语言上。语言上。示例:示例:DECLAREDECLARE v_deptno number(2);-v_deptno number(2);-与雇员表中部门代码字段交互的变量与雇员表中部门代码字段交互的变量
19、 v_sal number(7,2);-v_sal number(7,2);-与雇员表中工资字段交互的变量与雇员表中工资字段交互的变量BEGINBEGIN /*this is /*this is a test!a test!*/*/select deptno,sal into v_deptno,v_sal from emp where empno=7788;select deptno,sal into v_deptno,v_sal from emp where empno=7788;END;END;PL/SQLPL/SQL块的定义部分块的定义部分 在在PL/SQLPL/SQL块中引用的所有标识
20、符,都必须在定义部分中明确定义。块中引用的所有标识符,都必须在定义部分中明确定义。定义常量定义常量 格式:标识符格式:标识符 CONSTANTCONSTANT数据类型:数据类型:=表达式表达式 例:定义一常量例:定义一常量PIPI,值为值为3.143.14。PI CONSTANT NUMBER(3,2):=3.14;PI CONSTANT NUMBER(3,2):=3.14;定义标量型变量定义标量型变量 标量型数据类型,是指数据类型为个体型。标量型数据类型,是指数据类型为个体型。格式:格式:NOT NULL:=|DEFAULT NOT NULL:=|DEFAULT 例:定义一宽度为例:定义一宽
21、度为1010个字符的字符串变量个字符的字符串变量X X。DECLARE DECLARE X CHAR(5)X CHAR(5);y CHAR(5):=ORACLE;y CHAR(5):=ORACLE;Z CHAR(5)default oracle;Z CHAR(5)default oracle;代表数据库列的变量代表数据库列的变量先看一个示例:创建一先看一个示例:创建一PL/SQLPL/SQL块,根据部门号,返回部门名称块,根据部门号,返回部门名称.DECLAREDECLARE v_dname dept.dname%type;v_dname dept.dname%type;BEGINBEGIN
22、SELECT dname INTO v_dname FROM DEPT WHERE deptno=10;SELECT dname INTO v_dname FROM DEPT WHERE deptno=10;DBMS_OUTPUT.PUT_LINE(v_dname);DBMS_OUTPUT.PUT_LINE(v_dname);EXCEPTION WHEN NO_DATA_FOUND THENEXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE(sorry:no data found!);DBMS_OUTPUT.PUT_LINE(sorry
23、:no data found!);END;END;问题:问题:所引用的数据库表中的数据类型不知道?所引用的数据库表中的数据类型不知道?所引用的数据库表中的数据类型将来改变改变怎么办?所引用的数据库表中的数据类型将来改变改变怎么办?PL/SQLPL/SQL块的定义部分块的定义部分另一种定义标量型变量的方法另一种定义标量型变量的方法%TYPETYPE 定义一个变量定义一个变量,其数据类型与已知变量的数据类型相同,或者与数据库其数据类型与已知变量的数据类型相同,或者与数据库表的某个列的数据类型相同表的某个列的数据类型相同。%TYPETYPE的优点在于:的优点在于:所引用的数据库表中的数据类型可以不必
24、知道。所引用的数据库表中的数据类型可以不必知道。所引用的数据库表中的数据类型可以实时改变。所引用的数据库表中的数据类型可以实时改变。格式:格式:NOT NULL:=|DEFAULT NOT NULL:=|DEFAULT .%TYPETYPE例:定义一个变量,其数据类型基于另一个变量例:定义一个变量,其数据类型基于另一个变量DECLAREDECLARE V_1 NUMBER(7,2);V_1 NUMBER(7,2);V_11 V1%TYPE:=12345.6;V_11 V1%TYPE:=12345.6;例:定义一个变量,其数据类型基于数据库中表的列例:定义一个变量,其数据类型基于数据库中表的列D
25、ECLAREDECLARE v_ename EMP.ENAME%TYPE;v_ename EMP.ENAME%TYPE;V_SAL EMP.SAL%TYPE;V_SAL EMP.SAL%TYPE;PL/SQLPL/SQL块的定义部分块的定义部分另一种定义组合型变量的方法另一种定义组合型变量的方法%ROWTYPEROWTYPE 定义一个变量定义一个变量,其数据类型与数据库表的数据结构相同。其数据类型与数据库表的数据结构相同。%ROWTYPEROWTYPE的优点在于:的优点在于:所引用的数据库表中的数据类型可以不必知道。所引用的数据库表中的数据类型可以不必知道。所引用的数据库表中的数据类型可以实时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电力 公司 oracle 培训教材 29430
限制150内