- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle11g从入门到精通第5章.doc.doc
Oracle 11g从入门到精通
第5章 PL/SQL编程
PAGE 152
PAGE 151
5
11
PL/SQL编程( 教学录像:xx分钟)
第
第
章
章导读
PL/SQL(Procedural Language/SQL)是Oracle在数据库中引入的一种过程化编程语言。PL/SQL构建于SQL之上,可以用来编写包含SQL语句的程序。PL/SQL是第3、4代语言,其中包含这类语言的标准编程结构。
通过阅读本章,您可以:
? 了解PL/SQL的相关概述
? 掌握PL/SQL的数据类型、变量和常量
? 掌握PL/SQL的流程控制语句
? 掌握PL/SQL的游标
? 了解PL/SQl的异常处理机制
5.1 PL/SQL简介
教学录像:光盘\TM\lx\5\PLSQL简介.exe
PL/SQL(Procedural Language/SQL)是一种过程化语言,在PL/SQL中可以通过IF语句或LOOP语句实现控制程序的执行流程,甚至可以定义变量,以便在语句之间传递数据信息,这样PL/SQL语言就能够实现操控程序处理的细节过程,不像普通的SQL语句(如,DML语句、DQL语句)那样没有流程控制,也不存在变量,因此使用PL/SQL语言可以实现比较复杂的业务逻辑。PL/SQL是Oracle的专用语言,它是对标准SQL语言的扩展,它允许在其内部嵌套普通的SQL语句,这样就将SQL语句的数据操纵能力、数据查询能力和PL/SQL的过程处理能力结合在一起,到达各自取长补短的目的。
5.1.1 PL/SQL块结构
PL/SQL程序都是以块(BLOCK)为基本单位,整个PL/SQL块分三部分:声明部分(用DECLARE开头)、执行部分(以BEGIN开头)和异常处理部分(以EXCEPTION开头)。其中执行部分是必须的,其他两个部分可选。无论PL/SQL程序段的代码量有多大,其基本结构就是由这三部分组成。标准PL/SQL块的语法格式如下:
[DECLARE]
--声明部分,可选
BEGIN
--执行部分,必须
[EXCEPTION]
--异常处理部分,可选
END
接下来对PL/SQL块的三个组成部分进行详细说明。
(1)声明部分由关键字DECLARE开始,到BEGIN关键字结束。在这部分可以声明PL/SQL程序块中所用到的变量、常量和游标等。需要注意的是:在某个PL/SQL块中声明的内容只能在当前块中使用,而在其它PL/SQL块中是无法引用的。
(2)???行部分以关键字BEGIN开始,它的结束方式通常有两种。如果PL/SQL块中的代码在运行时出现异常,则执行完异常处理部分的代码就结束;如果没有使用异常处理或的PL/SQL块未出现异常,则以关键字END结束。执行部分是整个PL/SQL程序块的主体,主要的逻辑控制和运算都在这部分完成,所以在执行部分可以包含多个PL/SQL语句和SQL语句。
(3)异常处理部分以关键字EXCEPTION开始,在该关键字所包含的代码执行完毕,整个PL/SQL块也就结束了。在执行PL/SQL代码(主要是执行部分)的过程中,可能会产生一些意向不到的错误,比如除数为零,空值参与运算等等,这些错误都会导致程序中断运行。这样程序设计人员就可以在异常处理部分通过编写一定量的代码来纠正错误或者给用于提供一些错误信息提示,甚至是将各种数据操作回退到异常产生之前的状态,以备重新运行代码块。另外,对于可能出现的多种异常情况,用户可以使用WHEN THEN语句来实现多分支判断,然后就可以在每个分支下通过编写代码来处理相应的异常。
对于PL/SQL块中的语句,需要指出的是:每一条语句都必须以分号结束,每条SQL语句可以写成多行的形式,同样必须使用分号来结束。另外,一行中也可以有多条SQL语句,但是它们之间必须以分号分隔。接下来通过一个简单的示例来看一下PL/SQL块的完整应用。
例5.1 定义一个PL/SQL代码块,计算两个整数的和与这个两个整数的差的商,代码如下。(实例位置:光盘\TM\sl\5\1)
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 /
本例运行结果如图5.1所示。
图5.1 求两个整数的和与差的商
在上面的代码中,首先使
文档评论(0)