版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章PL/SQL编程基础
PL/SQL的简介
PL/SQL程序结构
PL/SQL的控制结构出错处理1.
第三节:PL/SQL的控制结构
PL/SQL的控制结构包括条件语句和循环语句两种类型●条件控制结构:是根据另一条语句或表达式的结果执行一个操作或一条语句。●循环控制结构:重复地执行一条或多条语句,或者循环一定的次数,或者直到满足某一条件时退出。2.二、循环循环被分为四种类型:●简单循环(LOOP...ENDLOOP)●WHILE循环(WHILE...LOOP...ENDLOOP)●数字式FOR循环(FOR...LOOP...ENDLOOP)在循环体内必须有退出循环的语句,否则就是死循环。退出循环的语法有两种:●EXITWHENCONDITION;●IFCONDITIONTHENEXIT;ENDIF;3.1、简单循环
简单循环的语法如下:LOOP语句序列;...EXIT[WHENcondition];ENDLOOP;4.例1:用简单循环loop语句实现输出1-10之间的平方数
declareinumber:=1;beginloopdbms_output.put_line(i||'的平方数为'||i*i);i:=i+1;
exitwheni>10;
endloop;end;/Loop开始退出循环体语句Loop结束5.例2:
declareinumber:=1;beginloopdbms_output.put_line(i||'的平方数为'||i*i);i:=i+1;
ifi>10thenexit;endif;
endloop;end;/6.2、WHILE循环WHILE循环的语法如下:WHILEconditionLOOP语句序列;ENDLOOP;7.例3:用WHILE循环结构求10的阶层。
declarennumber:=1;count1number:=1;begin
whilecount1<=10
loopn:=n*count1;count1:=count1+1;
endloop;dbms_output.put_line(n);end;/While语句控制Loop开始While语句控制Loop结束8.3、数字式FOR循环数字式FOR循环的语法如下:FORloop_counter
IN[REVERSE]low_bound..high_boundLOOP语句序列;ENDLOOP;其中:IN:表示索引变量的值从小到大INREVERSE:表示索引变量的值从大到小loop_counter:INTEGER类型的索引变量。low_bound:指定索引变量值范围的最小值high_bound:指定索引变量值范围的最大值9.例4:用FOR循环结构求10的阶层。
declarennumber:=1;count1number;begin
forcount1in2..10
loopn:=n*count1;
endloop;dbms_output.put_line(n);end;/10.例5:Declareinumber;begin
foriin1..5
loopdbms_output.put_line('i='||i);
endloop;dbms_output.put_line('endofforloop');end;/11.例6:在FOR循环中考虑索引变量的值从大到小begin
foriinREVERSE1..5loopdbms_output.put_line('i='||i);endloop;dbms_output.put_line('endofforloop');end;/12.
第四节:出错处理
出错处理方法是程序对运行时刻出现的错误作出反应并进行处理的方法。在PL/SQL块中,当错误发生时,程序控制无条件地转移到当前PL/SQL块的出错处理部分。一旦控制转移到出错处理部分,就不能再转到相同块的可执行部分。出错处理是PL/SQL块中可选部分。13.一、出错处理的语法和原则1、出错处理的语法EXCEPTIONWHEN错误1[OR错误2]THEN语句序列1;WHEN错误3[OR错误4]THEN语句序列2;...WHENOTHERSTHEN语句序列3;END;14.2、出错处理的原则●将WHENOTHERS从句放置在所有其他出错处理从句的后面。●最多只能有一个WHENOTHERS从句。●在块中必须以关键字EXCEPTION开始一个出错处理。●可以在块中定义多个出错处理(WHEN语句),每一个出错处理包含一组语句。●当一个错误发生时,在离开块之前,PL/SQL只处理一个出错处理。15.二、各种错误处理出错情况包括:系统预定义的错误、用户自定义的错误。
错误描述处理方向系统预定义的错误在PL/SQL中经常出现的25个系统定义的错误不必定义,允许服务器隐式地触发它们,只需要在出错处理部分处理它们。用户自定义的错误开发者认为是非正常的一个条件必须在说明部分定义,在执行部分显式地触发它们,在出错处理部分处理它们。16.1、系统预定义的错误
这些错误是在系统的STANDARD包中定义的。直接在PL/SQL块的出错处理部分的WHEN从句中进行处理。例8:declarenamestudent.sname%type;beginselectsnameintonamefromstudentwheresno='05880110';dbms_output.put_line(name);exceptionwhenno_data_foundthendbms_output.put_line('没有找到所需要的数据!');end;/系统错误异常处理17.例9:declarenamestudent.sname%type;beginSelectsnameintonamefromstudentwheresno='05880101';dbms_output.put_line(name);exceptionwhenno_data_foundthendbms_output.put_line('没有找到所需要的数据!');end;/18.例10:
declareanumber:=8;bnumber:=0;cnumber(3);
beginc:=a/b;dbms_output.put_line(c);
exceptionwhenzero_dividethendbms_output.put_line('错误,除数不能为0!');end;/19.20.21.2、用户自定义的错误
用户自定义的错误是程序定义的一个错误,并不一定是一个Oracle错误,它可能是与业务相关的一个错误,比如违反了业务规则。处理用户自定义的错误分三步:
(1)定义错误(2)触发错误(3)处理错误22.(1)定义错误用户定义的错误是在PL/SQL块的说明(declare)部分进行定义的。和变量相类似,错误也有一个作用范围。定义错误的语法:
错误名exception;例:DECLARE
MY_EXCEPTIONexception;23.(2)触发错误当一个相关的条件满足时,在语句执行部分通过显式使用RAISE语句来触发用户定义的错误。而预定义的错误是当相关的Oracle错误发生时被PL/SQL执行引擎隐式触发的。触发错误的语法:
RAISE错误名;例:触发用户自定义的错误BEGINIFV_COMMISNULLTHEN
RAISEMY_EXCEPTION;ENDIF;…24.(3)处理错误
在程序的出错处理部分对自定义的错误进行处理。处理方法与系统预定义的错误一样。处理错误的语法:
WHEN错误名THEN…例:处理用户自定义的错误EXCEPTIONWHENMY_EXCEPTIONTHENDbms_output.put_line(‘奖金为空’);25.例11:declarev_namestudent.sname%type;eexception;beginselectsnameintov
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年医院健康科普文化建设与公众教育
- 2026年危化品安全管理人员能力提升培训
- 2026年中小企业主家庭财富管理顾问选择
- 2026年图书馆阅览室卫生管理规定
- 2026年网络安全工程师从入门到专家
- 2026年高中美术鉴赏与大学艺术设计专业基础衔接
- 2026年医务人员压力管理与沟通心态调适
- 2026年电力安全VR体验馆与线上平台联动
- 2026年小儿推拿店应急预案与演练脚本
- 2026年媒体关系维护与沟通技巧
- 2026湖南益阳桃江县产业发展投资集团有限公司招聘4人笔试参考题库及答案详解
- 2026年特种设备使用管理规则题库
- 2026年市政质量员《专业管理实务》综合提升练习题附参考答案详解【研优卷】
- 雨课堂学堂在线学堂云《医学专业英语(中南)》单元测试考核答案
- 小学二年级数学下册(苏教版)隔位退位减教学设计
- 江西H高校学生社团运作行政化问题深度剖析
- 【新教材】北师大版(2024)八年级下册生物期末复习全册知识点考点提纲
- 肥料、农药采购服务投标方案技术标
- 第二类精神药品临床应用管理规范
- 破产管理人培训
- 第四单元第13课羊字头(课件)书法北师大版四年级上册
评论
0/150
提交评论