Oracle数据库管理 开发与实践 教学课件 ppt 作者 杨永健 刘尚毅 第6章 PL SQL编程

上传人:w****i 文档编号:94461230 上传时间:2019-08-07 格式:PPT 页数:37 大小:1.28MB
返回 下载 相关 举报
Oracle数据库管理 开发与实践 教学课件 ppt 作者 杨永健 刘尚毅 第6章 PL SQL编程_第1页
第1页 / 共37页
Oracle数据库管理 开发与实践 教学课件 ppt 作者 杨永健 刘尚毅 第6章 PL SQL编程_第2页
第2页 / 共37页
Oracle数据库管理 开发与实践 教学课件 ppt 作者 杨永健 刘尚毅 第6章 PL SQL编程_第3页
第3页 / 共37页
Oracle数据库管理 开发与实践 教学课件 ppt 作者 杨永健 刘尚毅 第6章 PL SQL编程_第4页
第4页 / 共37页
Oracle数据库管理 开发与实践 教学课件 ppt 作者 杨永健 刘尚毅 第6章 PL SQL编程_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《Oracle数据库管理 开发与实践 教学课件 ppt 作者 杨永健 刘尚毅 第6章 PL SQL编程》由会员分享,可在线阅读,更多相关《Oracle数据库管理 开发与实践 教学课件 ppt 作者 杨永健 刘尚毅 第6章 PL SQL编程(37页珍藏版)》请在金锄头文库上搜索。

1、,本章要求:,第6章 PL/SQL编程,了解PL/SQL的相关概述 掌握PL/SQL的数据类型、变量和常量 掌握PL/SQL的流程控制语句 掌握PL/SQL的游标 了解PL/SQl的异常处理机制,主要内容,1.PL/SQL简介 2.数据类型、变量和常量 3.流程控制语句 4. PL/SQL游标 5. PL/SQL异常处理 6.综合实例使用游标查询工资小于1000的员工工资,第6章 PL/SQL编程,6.1.1 PL/SQL块结构 6.1.2 代码注释和标识符,6.1 PL/SQL简介,PL/SQL程序都是以块(BLOCK)为基本单位,整个PL/SQL块分三部分:声明部分(用DECLARE开头)

2、、执行部分(以BEGIN开头)和异常处理部分(以EXCEPTION开头)。其中执行部分是必须的,其他两个部分可选。无论PL/SQL程序段的代码量有多大,其基本结构就是由这三部分组成。标准PL/SQL块的语法格式如下: DECLARE -声明部分,可选 BEGIN -执行部分,必须 EXCEPTION -异常处理部分,可选 END 接下来对PL/SQL块的三个组成部分进行详细说明。 (1)声明部分由关键字DECLARE开始,到BEGIN关键字结束。在这部分可以声明PL/SQL程序块中所用到的变量、常量和游标等。需要注意的是:在某个PL/SQL块中声明的内容只能在当前块中使用,而在其它PL/SQL

3、块中是无法引用的。 (2)执行部分以关键字BEGIN开始,它的结束方式通常有两种。如果PL/SQL块中的代码在运行时出现异常,则执行完异常处理部分的代码就结束;如果没有使用异常处理或的PL/SQL块未出现异常,则以关键字END结束。执行部分是整个PL/SQL程序块的主体,主要的逻辑控制和运算都在这部分完成,所以在执行部分可以包含多个PL/SQL语句和SQL语句。,6.1.1 PL/SQL块结构,(3)异常处理部分以关键字EXCEPTION开始,在该关键字所包含的代码执行完毕,整个PL/SQL块也就结束了。在执行PL/SQL代码(主要是执行部分)的过程中,可能会产生一些意向不到的错误,比如除数为

4、零,空值参与运算等等,这些错误都会导致程序中断运行。这样程序设计人员就可以在异常处理部分通过编写一定量的代码来纠正错误或者给用于提供一些错误信息提示,甚至是将各种数据操作回退到异常产生之前的状态,以备重新运行代码块。另外,对于可能出现的多种异常情况,用户可以使用WHEN THEN语句来实现多分支判断,然后就可以在每个分支下通过编写代码来处理相应的异常。 对于PL/SQL块中的语句,需要指出的是:每一条语句都必须以分号结束,每条SQL语句可以写成多行的形式,同样必须使用分号来结束。另外,一行中也可以有多条SQL语句,但是它们之间必须以分号分隔。接下来通过一个简单的示例来看一下PL/SQL块的完整

5、应用。,【例6-1】定义一个PL/SQL代码块,计算两个整数的和与这个两个整数的差的商,代码如下。 SQL set serveroutput on SQL declare 2 a int:=100; 3 b int:=200; 4 c number; 5 begin 6 c:=(a+b)/(a-b); 7 dbms_output.put_line(c); 8 exception 9 when zero_divide then 10 dbms_output.put_line(除数不许为零!); 11 end; 12 / 本例运行结果如图6-1所示。 图6-1 求两个整数的和与差的商,注释用于对程

6、序代码的解释说明,它能够增强程序的可读性,使程序更易于理解。注释编译时被PL/SQL编译器忽略掉,注释有单行注释和多行注释两种情况。另外,在PL/SQL块中声明的变量、常量、游标和存储过程等标示符的名称都是由一系列字符集所组成的,Oracle对这些组成标识符的字符集有一定的规范和要求。本小节将对这两项内容进行讲解。 1单行注释 单行注释由连个连接字符“-”开始,后面紧跟着注释内容。 【例6-2】 编写一段PL/SQL代码块,并为主要代码添加单行注释,代码如下。 SQL set serveroutpu on -在服务器端输出结果 SQL declare 2 Num_sal number; -声明

7、一个数值变量 3 Var_ename varchar2(20); -声明一个字符串变量 4 begin 5 select ename,sal into Var_ename,Num_sal from emp -检索指定的值并存储到变量中 6 where empno=7369; 7 dbms_output.put_line(Var_ename|的工资是|Num_sal); -输出变量中值 8 end; 2多行注释 多行注释由/*开头,由*/结尾,这个大多数编程语言是相同的。,6.1.2 代码注释和标识符,【例6-3】 编写一段PL/SQL代码块,并为主要代码添加多行注释,代码如下。 SQL set

8、 serveroutpu on /*在服务器端输出结果*/ SQL declare 2 Num_sal number; /*声明一个数值变量*/ 3 Var_ename varchar2(20); /*声明一个字符串变量*/ 4 begin 5 /*检索指定的值 并存储到变量中*/ 6 select ename,sal into Var_ename,Num_sal from emp 7 where empno=7369;. 8 /*输出变量中值*/ 9 dbms_output.put_line(Var_ename|的工资是|Num_sal); 10 end; 3PL/SQL字符集 所有的PL/

9、SQL程序元素(比如,关键字、变量名、常量名等)都是由一些字符序列组合而成的,而这些字符序列中的字符都必须取自PL/SQL语言所允许使用的字符集,那么这些合法的字符集主要包括以下内容: 大写和小写字母:A-Z或a-z。 数字:0-9。 非显示的字符:制表符、空格和回车。 数学符号:+,-,*,/,=等。 间隔符:包括(),?,!,;,:,#,%,$,&等。 只有上面列出的这些符合要求的字符才可以在PL/SQL程序中使用,其它的字符都是非法的,不可以使用。PL/SQL程序不区分字母的大小写,但由单引号引起来的字符串和格式化后的日期除外。,6.2 数据类型、变量和常量,6.2.1 基本数据类型 6

10、.2.2 特殊数据类型 6.2.3 定义变量和常量,6.2.1 基本数据类型,与其它编程语言一样,PL/SQL语言也有多种数据类型,这些数据类型能够满足在编写PL/SQL程序过程中定义变量和常量之用,本节主要介绍在编写PL/SQL程序时经常用到的基本数据类型。 1数值类型 数值类型主要包括NUMBER、PLS_INTEGER和BINARY_INTEGER三种基本类型。其中,NUMBER类型的变量可以存储整数或浮点数;而BINARY_INTEGER或PLS_INTEGER类型的变量只存储整数。 NUMBER类型还可以通过NUMBER(P,S)的形式来格式化数字,其中,参数P表示精度,参数S表示刻

11、度范围。精度是指数值中所有有效数字的个数,而刻度范围是指小数点右边小数位的个数,在这里精度和刻度范围都是可选的。下面通过一个示例来具体了解一下。 【例6-4】 声明一个精度为9,且刻度范围为2的表示金额的变量Num_Money,代码如下。 Num_Money NUMBER(9,2); PL/SQL语言出于代码可读性或为了与来自其它编程语言的数据类型相兼容的考虑,提出了“子类型”的概念,所谓的子类型就是与NUMBER类型等价的类型别名,甚至可以说是NUMBER类型的多种重命名形式,这些等价的子类型主要包括DEC、DECIMAL、DOUBLE、INTEGER、INT、NUMERIC、SMALLIN

12、T、BINARY_INTEGER、PLS_INTEGER等。,2字符类型 字符类型主要包括VARCHAR2、CHAR、LONG、NCHAR和NVARCHAR2等。这些类型的变量用来存储字符串或字符数据。下面对这几种字符类型进行讲解。 VARCHAR2类型 PL/SQL语言中的VARCHAR2类型和数据库类型中的VARCHAR2比较类似,用于存储可变长度的字符串,其声明语法格式为: VARCHAR2(maxlength) 参数maxlength表示可以存储字符串的最大长度,这个参数值在定义变量时必须给出(因为VARCHAR2类型没有默认的最大长度),参数maxlength的最大值可以是32767

13、。 注意:数据库类型的VARCHAR2的最大长度是4000字节,所以一个长度大于4000字节的PL/SQL类型VARCHAR2变量不可以赋值给数据库中的一个VARCHAR2变量,而只能赋值给LONG类型的数据库变量。 CHAR类型 CHAR类型表示指定长度的字符串,其语法格式如下: CHAR(maxlength) 参数maxlength是指可存储字符串的最大长度,以字节为单位,最大为32767字节,CHAR类型的默认最大长度为1。如果赋给CHAR类型变量的值不足maxlength,则在其后面用空格补全。 注意:数据库类型中的CHAR只有2000字节,所以如果PL/SQL中CHAR类型的变量长度

14、大于2000个字节,则不能赋给数据库中的CHAR。,LONG类型 LONG类型表示一个可变的字符串,最大长度是32767字节,而数据库类型的LONG最大长度可达2GB,所以任何字符串变量都可以赋值给它。 NCHAR和NVARCHAR2类型 这两种数据类型的长度要根据各国字符集来确定,只能具体情况具体分析。 3日期类型 日期类型只有一个种即DATE类型,用来存储日期和时间信息,DATE类型的存储空间是7个字节,分别使用一个字节存储世纪、年、月、天、小时、分钟和秒。 4布尔类型 布尔类型也只有一种即BOOLEAN,主要用于程序的流程控制和业务逻辑判断,其变量值可以是TRUE、FALSE或NULL中

15、的一种。,为了提高用户的编程效率和解决复杂的业务逻辑需求,PL/SQL语言除了可以使用Oracle规定的基本数据类型外,还提供了3种特殊的数据类型,但这三种类型仍然是建立在基本数据类型基础之上的。 1%TYPE类型 使用%TYPE关键字可以声明一个与指定列名称相同的数据类型,它通常紧跟在指定列名的后面。 【例6-5】 声明了一个与emp表中job列的数据类型完全相同的变量var_job,代码如下。 declare var_job emp.job%type; 在上面的代码中,若emp.job列的数据类型为VARCHAR2(10),那么变量var_job的数据类型也是 VARCHAR2(10),甚

16、至可以把“emp.job%type”就看做是一种能够存储指定列类型的特殊数据类型。 使用%TYPE定义变量有两个好处:第一,用户不必查看表中各个列的数据类型,就可以确保所定义的变量能够存储检索的数据;第二:如果对表中已有列的数据类型进行修改,则用户不必考虑对已定义的变量所使用的数据类型进行更改,因为%TYPE类型的变量会根据列的实际类型自动调整自身的数据类型。,6.2.2 特殊数据类型,【例6-6】在scott模式下,使用%type类型的变量输出emp表中编号为7369的员工名称和职务信息,代码如下。 SQL set serveroutput on SQL declare 2 var_ename emp.ename%type; -声明与ename列类型相同的变量 3 var_job emp.job%type; -声明与job列类型相同的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号