第6章-PL-SQL编程基础课件_第1页
第6章-PL-SQL编程基础课件_第2页
第6章-PL-SQL编程基础课件_第3页
第6章-PL-SQL编程基础课件_第4页
第6章-PL-SQL编程基础课件_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论