《第3章 PLSQL编程(1).ppt》由会员分享,可在线阅读,更多相关《第3章 PLSQL编程(1).ppt(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 1解释数据库的四个基本概念:数据、数据库、数据库管理系统、解释数据库的四个基本概念:数据、数据库、数据库管理系统、数据库系统。数据库系统。p1p1DATA:数据就是事物的符号记录,是能够被计算机识别、存储和处理的信息。数据就是事物的符号记录,是能够被计算机识别、存储和处理的信息。DB:长期存储在计算机内、有组织的、可共享的数据集合。长期存储在计算机内、有组织的、可共享的数据集合。DBMS:位于用户与操作系统之间的一层数据管理软件。位于用户与操作系统之间的一层数据管理软件。DBS:指指引引入入数数据据库库后后的的计计算算机机系系统统,它它一一般般由由操操作作系系统统、数数据据库库管管理理系系
2、统统、数数据据库库、应应用用程程序序、数数据据库库管管理理员员(DatabaseAdministrator,简简称称DBA)和用户构成。和用户构成。3 3简述数据库系统的三级模式结构与二级映像。简述数据库系统的三级模式结构与二级映像。p7p71.简述启动简述启动Oracle9i数据库的一般步骤。数据库的一般步骤。p322.简述启动简述启动Oracle9i模式中三个选项的区别。模式中三个选项的区别。p323.简述关闭简述关闭Oracle9i模式中四个选项的区别。模式中四个选项的区别。p334.如何安装如何安装Oracle9i系统软件?如何正确地卸载系统软件?如何正确地卸载Oracle9i软件?软
3、件?1)安装安装Oracle9iDatabase服务器端;服务器端;2)安装客户端安装客户端Oracle9iClient;3)再安装再安装Oracle9iManagementandIntegration;卸载时卸载时:1)先关闭所有先关闭所有Oracle服务和程序;服务和程序;2)运运行行OracleUniversalInstaller,选选择择卸卸装装产产品品,选选中中已已安安装装的的产产品,单击品,单击“删除删除”;3)然后修改注册表,删除所有与然后修改注册表,删除所有与oracle有关的注册表选项;有关的注册表选项;4)最最后后删删除除硬硬盘盘上上的的所所有有相相关关的的包包括括文文件件
4、在在内内的的安安装装目目录录。重重新新启启动动系统。系统。大型数据库概论大型数据库概论IntroductionofLargeDatabase第第3章章PLSQL编程编程(1)学习目标学习目标1 1、掌握掌握掌握掌握PL/SQLPL/SQLPL/SQLPL/SQL语句块的使用。语句块的使用。语句块的使用。语句块的使用。2 2 2 2、掌握、掌握、掌握、掌握PL/SQLPL/SQLPL/SQLPL/SQL中变量的使用。中变量的使用。中变量的使用。中变量的使用。3 3 3 3、掌握、掌握、掌握、掌握PL/SQLPL/SQLPL/SQLPL/SQL中常用数据类型的使用。中常用数据类型的使用。中常用数据
5、类型的使用。中常用数据类型的使用。4 4 4 4、掌握、掌握、掌握、掌握PL/SQLPL/SQLPL/SQLPL/SQL中常用数据类型的使用。中常用数据类型的使用。中常用数据类型的使用。中常用数据类型的使用。5 5 5 5、掌握掌握掌握掌握PL/SQLPL/SQLPL/SQLPL/SQL中主要控制结构的使用。中主要控制结构的使用。中主要控制结构的使用。中主要控制结构的使用。第第5章章PL/SQL编程编程PL/SQL是是Oracle9i在标准在标准SQL基础上扩展基础上扩展的一种过程化数据库编程语言,既具有标准的一种过程化数据库编程语言,既具有标准SQL语言的简洁性,又具有过程语言的灵活性,语言
6、的简洁性,又具有过程语言的灵活性,体现了体现了Oracle9i数据库的特点。数据库的特点。PL/SQL是经过编译以后执行的,所以是经过编译以后执行的,所以执行执行速度快于速度快于SQL语句语句,并减少了服务器和客户机,并减少了服务器和客户机之间的网络传输,提高了数据库系统的效率。之间的网络传输,提高了数据库系统的效率。PL/SQLPL/SQL基础基础语语法法规规则则是是构构成成任任何何程程序序设设计计语语言言的的基基石石,PL/SQL也也不不例例外外。本本节节主主要要讨讨论论PL/SQL语语句句块块、变量、常用数据类型、表达式和运算符。变量、常用数据类型、表达式和运算符。PL/SQLPL/SQ
7、L语句块语句块nPL/SQL是一种结构化的语言,其是一种结构化的语言,其程序结构的程序结构的基本单位是基本单位是“块块”(Block),),组成程序的块可以组成程序的块可以顺序出现,也可以相互嵌套,每个块执行程序的一顺序出现,也可以相互嵌套,每个块执行程序的一个独立功能。个独立功能。nPL/SQL语句块分语句块分匿名匿名(anonymous)块块和和命名命名(named)块块两种。匿名块是动态生成的,它只两种。匿名块是动态生成的,它只能执行一次;而命名块是具有名字的语句块,如存能执行一次;而命名块是具有名字的语句块,如存储在数据库内部的过程、函数、包和触发器等,可储在数据库内部的过程、函数、包
8、和触发器等,可以执行多次。以执行多次。PL/SQL语语句句块块一一般般包包含含三三个个部部分分:声声明明部部分分、执执行行部部分分和和异异常处理部分常处理部分。其其中中,执执行行部部分分是是必必需需的的,其其它它两两个个部部分分是是可可选选的的。定定义义PL/SQL语句块的语法如下:语句块的语法如下:DECLARE声明部分声明部分/*主要声明变量、常量、自定义类型和游标等主要声明变量、常量、自定义类型和游标等*/BEGIN执行部分执行部分/*包含各种合法的包含各种合法的PL/SQL语句语句*/EXCEPTION异常处理部分异常处理部分 /*当程序出现错误时执行该部分语句当程序出现错误时执行该部
9、分语句*/END;/*程序块结束程序块结束*/上面语法中各参数描述如下:上面语法中各参数描述如下:n n声声明明部部分分:声声明明变变量量、常常量量、游游标标和和自自定定义类型。义类型。n n执执行行部部分分:必必须须部部分分,描描述述了了语语句句块块所所要要完完成成的的处处理理工工作作,可可以以使使用用SQLSQL语语句句和和过过程程性性语句。语句。n n异异常常处处理理部部分分:对对错错误误进进行行处处理理。如如果果没没有发生错误,该部分中的代码将不会被执行。有发生错误,该部分中的代码将不会被执行。例例3.1定义一个定义一个PL/SQL语句块。语句块。setserveroutputon;d
10、eclarel_textvarchar2(100);beginl_text:=Hello,World!;dbms_output.put_line(l_text);exceptionwhenothersthendbms_output.put_line(引发了一个异常!引发了一个异常!);raise;end;PL/SQL变量是可以存储数据的内存单元,其变量是可以存储数据的内存单元,其内容随着程序的运行可以发生变化。内容随着程序的运行可以发生变化。PL/SQL借助于借助于变量可以与数据库进行通信,来自数据库中的信息变量可以与数据库进行通信,来自数据库中的信息可以赋给变量,而变量中的内容也可以被插入到
11、数可以赋给变量,而变量中的内容也可以被插入到数据库中。据库中。变变量量在在PL/SQL语语句句块块的的声声明明部部分分被被声声明明。每每一一个个变变量量都都有有一一个个特特定定的的类类型型,该该类类型型描描述述了了可可以以在在该该变变量量中中存存储储的的数数据据类类型型(下下一一小小节节将将讨讨论论数数据据类型)。类型)。PL/SQLPL/SQL变量变量变量的命名及声明:n n必必须须以以字字母母开开头头,其其后后可可跟跟随随一一个个或或多多个个字字母母、数数字字、货币符号、下划线和货币符号、下划线和“#”字符。字符。n n变量的最大长度是变量的最大长度是3030个字符。个字符。n n变量名中
12、不能有空格。变量名中不能有空格。PL/SQL语语句句块块的的声声明明部部分分声声明明变变量量(或或常常量量)的的语语法法如如下:下:变变量量名名 CONSTANT 数数据据类类型型 DEFAULT 值值|NOT NULL:=值值;注意注意:每一行只能声明一个变量;每一行只能声明一个变量;声声明明一一个个常常量量要要加加上上关关键键字字CONSTANT,而而且且必必须须初初始化始化,初始化后常量值就不能更改了。,初始化后常量值就不能更改了。例如,下面都是合法的变量声明:例如,下面都是合法的变量声明:DECLARESnoVARCHAR2(6);SageNUMBER(2)NOTNull:=18;Da
13、te_Of_TodayDATENOTNull:=sysdate;SclassCHAR(20)NOTNull:=计算机科学计算机科学与技术与技术41;3.1.33.1.3PL/SQLPL/SQL常用数据类型常用数据类型除了支持除了支持SQL标准的数据类型外,标准的数据类型外,Oracle9i还为还为PL/SQL提供了一些特殊的数据提供了一些特殊的数据类型。其中常用的数据类型有以下几种。类型。其中常用的数据类型有以下几种。1。字符类型。字符类型字符类型用来存储字符数据,常用的字符类型字符类型用来存储字符数据,常用的字符类型有有:CHAR、VARCHAR2、NCHAR、NVARCHAR2、LONG、
14、LONGRAW和和RAW等。等。CHAR(LCHAR|BYTE)存储存储定长字符串定长字符串。其中可选项。其中可选项L(缺省值为缺省值为1)是变量的长度,是变量的长度,CHAR和和BYTE分别用来指定分别用来指定L是以是以字符还是字节字符还是字节为单位(缺省为为单位(缺省为CHAR),),一个字符可一个字符可以包括一个或多个字节,这取决于系统的字符集设以包括一个或多个字节,这取决于系统的字符集设置。置。CHAR变量的最大长度是变量的最大长度是32767字节,字节,CHAR数据库表列的最大长度是数据库表列的最大长度是2000字节。字节。VARCHAR2(LCHAR|BYTE)存储存储变长字符串变
15、长字符串。VARCHAR2变量的最大长变量的最大长度是度是32767字节,字节,VARCHAR2数据库表列的数据库表列的最大长度是最大长度是4000字节。字节。VARCHAR2还有两个还有两个子类型子类型:STRING、VARCHAR,它们有着与它们有着与VARCHAR2相同的范围,使用它们主要是为了相同的范围,使用它们主要是为了与与ANSI/ISO类型相兼容,建议使用类型相兼容,建议使用VARCHAR2。NCHAR(L)和和NVARCHAR2(L)存储存储定长和变长国际字符集数据定长和变长国际字符集数据,取值范,取值范围分别与围分别与CHAR和和VARCHAR2相同相同.NCHAR和和NVA
16、RCHAR2中的中的L始终是按始终是按字符指定的。字符指定的。LONG变变量量存存储储变变长长字字符符串串,这这点点与与LONG数数据据库库表表列列不不同同。LONG变变量量的的最最大大长长度度是是32760字字节节(比比VARCHAR2变变量量少少了了7个个字字节节),LONG数数据据库库表列的最大长度是表列的最大长度是231字节。字节。LONG RAW的的精精度度与与LONG相相同同,但但LONGRAW存储的是存储的是二进制数据或字节字符串二进制数据或字节字符串。RAW的的精精度度与与CHAR相相同同,但但RAW存存储储的的是是二二进制数据或字节字符串。进制数据或字节字符串。LONG、LO
17、NGRAW和和RAW(L)2。数数值值类类型型:用用来来存存储储整整数数、实实数数和和浮浮点点数数,常常用用的的数数值值类类型型有有NUMBER、PLS_INTEGER和和BINARY_INTEGER。NUMBER(P,S)存储存储整数或浮点数整数或浮点数。其中。其中P是精度(指数值中是精度(指数值中所有数字的个数),所有数字的个数),S是刻度(指小数点右边是刻度(指小数点右边数字的个数),数字的个数),S取负数表示由小数点开始向取负数表示由小数点开始向左计算数字的个数。左计算数字的个数。P和和S都是可选的,但是如都是可选的,但是如果指定了刻度,则必须指定精度。果指定了刻度,则必须指定精度。表
18、表5.15.1给出了不同的精度和刻度组合及其含义(四舍五入)。给出了不同的精度和刻度组合及其含义(四舍五入)。NUMBER有许多子类型:有许多子类型:DEC、DECIMAL、DOUBLEPRECISION、FLOAT、INTEGER、INT、NUMERIC、REAL、SMALLINT等。等。PLS_INTEGER:存储有符号整数存储有符号整数,精度范围是,精度范围是-231231,但数据库表列不能存储,但数据库表列不能存储PLS_INTEGER数据。与数据。与NUMBER相比,相比,PLS_INTEGER占用较少的存储空间,并占用较少的存储空间,并且可以直接进行算术运算(而且可以直接进行算术运
19、算(而NUMBER必须先转变成二进必须先转变成二进制才能进行算术运算)。制才能进行算术运算)。PLS_INTEGER进行运算发生溢进行运算发生溢出时,会触发异常。出时,会触发异常。BINARY_INTEGER:存储类型与精度与存储类型与精度与PLS_INTEGER相似,但操作比相似,但操作比PLS_INTEGER要慢,且要慢,且运算发生溢出时,如果指派给一个运算发生溢出时,如果指派给一个NUMBER变量就不会触变量就不会触发异常。发异常。3。日期。日期/时间类型时间类型日日期期/时时间间类类型型用用来来存存储储日日期期、时时间间和和时时间间间间隔隔,常常用用的的 日日 期期/时时 间间 类类
20、型型 有有 DATE、TIMESTAMP和和INTERVAL。DATE存存储储日期和日期和时间时间数据,包括世数据,包括世纪纪、年、月、日、小、年、月、日、小时时、分和秒(但不存分和秒(但不存储储秒的小数部分),缺省格式秒的小数部分),缺省格式为为DD-MON-YY。DATE数据占用数据占用7个字个字节节,每个部分占一个,每个部分占一个字字节节。函数。函数SYSDATE返回系返回系统统当前日期和当前日期和时间时间。有效。有效的日期和的日期和时间时间范范围围是公元前是公元前4712年年1月月1日公元日公元9999年年12月月31日。日。TIMESTAMP(P)存储年、月、日、小时、分和秒,但存储
21、年、月、日、小时、分和秒,但还可存储秒还可存储秒的小数部分的小数部分。其中。其中P是秒小数部分的精度,范围是秒小数部分的精度,范围是是09,缺省值是,缺省值是6。TIMESTAMP(P)WITHTIMEZONETIMESTAMP类型的扩展,包含类型的扩展,包含时区偏移时区偏移(当地(当地时间和格林尼治时间的差异)。时间和格林尼治时间的差异)。例如,以下脚本可以用来显示系统当前日期、时间及时例如,以下脚本可以用来显示系统当前日期、时间及时区偏移。区偏移。DECLAREV_TIMETIMESTAMP(3)WITHTIMEZONE;BEGINSELECTSYSDATEINTOV_TIMEFROMDU
22、AL;DBMS_OUTPUT.PUT_LINE(V_TIME);END;INTERVALDAY(P1)TOSECOND(P2)存储天数、小时、分钟和秒之间的时间间隔。存储天数、小时、分钟和秒之间的时间间隔。其中其中P1、P2分别指定天和秒的数字位数,范围为分别指定天和秒的数字位数,范围为09,缺省值分别是,缺省值分别是2和和6。4。Boolean类型:存储类型:存储TRUE、FALSE和和NULL。declarev_intevalINTERVALDAY(7)TOSECOND(5);beginv_inteval:=INTERVAL45:12:10.222DAYTOSECOND;dbms_outp
23、ut.put_line(v_inteval);end;declarev_intevalINTERVALYEAR(3)TOMONTH;beginv_inteval:=INTERVAL123-2YEARTOMONTH;dbms_output.put_line(v_inteval);end;存存储储最最大大尺尺寸寸不不超超过过4GB的的无无结结构构数数据据块块(如如文文本本、图图像像、声声音音和和视视频频等等),常常用用的的LOB类类型型有有BFILE、BLOB、CLOB和和NCLOB。BFILE:在在数数据据库库外外的的操操作作系系统统文文件件中中存存储储大大型型的的二二进进制制文文件件,每每个个
24、BFILE变变量量存存储储着着一一个个文文件件定定位位器器(包包含含一一个个路路径径别别名名来来指指定定一一个个完完整整路路径径),用用来来指指向向服服务务器器上上的大型二进制文件。的大型二进制文件。BLOB:在在数数据据库库内内存存储储大大型型的的二二进进制制对对象象,每每个个BLOB对象存储一个定位器,指向大型的二进制对象。对象存储一个定位器,指向大型的二进制对象。CLOB:在在数数据据库库内内存存储储大大型型的的字字符符型型数数据据,每每个个CLOB对象存储一个定位器,指向大型的字符型数据。对象存储一个定位器,指向大型的字符型数据。NCLOB:在在数数据据库库内内存存储储大大型型的的NC
25、HAR类类型型数数据据,每每个个NCLOB对对象象存存储储一一个个定定位位器器,指指向向大大型型的的NCHAR类型数据。类型数据。5 5 LOBLOB类型:类型:每每个个PL/SQL基基类类型型(如如上上述述数数据据类类型型)指指定定了了一一组组值值和和一一组组适适应应该该类类型型操操作作的的约约定定,子子类类型型不不是是一一个个新新类类型型,而是基类型的候选名称,有着与基类型同样的操作约定。而是基类型的候选名称,有着与基类型同样的操作约定。自定义子类型的语法:自定义子类型的语法:SUBTYPE子类型名子类型名IS基类型基类型NOTNULL;例如,以下脚本定义了一个子类型例如,以下脚本定义了一
26、个子类型MYTYPE和和MYTYPE类类型的变量型的变量MYTEXT。DECLARESUBTYPEMYTYPEISVARCHAR2(6);MYTEXTMYTYPE;6自定义子类型自定义子类型7 7记录类型:记录类型:记记录录是是PL/SQL中中的的一一个个复复合合类类型型,前前面面所所讲讲述述的的都都是是标标量量类类型型。标标量量类类型型的的内内部部没没有有可可以以单单独独操操纵纵的的元元素素,它它与与数数据据库库表表列列的的数数据据类类型型一一般般是是一一致致的的,而而复复合合类类型型的的内内部部含含有有可可以单独操纵的元素。以单独操纵的元素。记记录录类类似似于于数数据据库库表表列列的的集集
27、合合,表表的的%ROWTYPE属属性实质上就是一种记录类型。性实质上就是一种记录类型。记记录录类类型型:PL/SQL记记录录类类型型类类似似于于C语语言言中中的的结结构体构体,声明记录类型的语法如下:,声明记录类型的语法如下:DECLARETYPE记录名记录名ISRECORD(字段名字段名1NOTNULL:=值值,字段名字段名nNOTNULL:=值值);%TYPE:PL/SQL变变量量可可用用来来处处理理数数据据库库表表中中的的数数据据,该该变变量量必必须须拥拥有有与与数数据据库库表表列列相相同同的类型。的类型。例例如如,要要定定义义与与system.student表表中中Sname列列(类类
28、型型为为VARCHAR2(6))相相同同类类型的变量型的变量studentname可以声明如下:可以声明如下:DECLAREstudentnameVARCHAR2(6);但但 若若 Sname列列 的的 类类 型型 发发 生生 改改 变变,则则studentname变变量量必必须须重重新新定定义义,这这是是十十分分耗耗时时和和容容易易出出错错的的。解解决决的的办办法法是是使使用用数数据据库库表表列列的的%TYPE属性,它对应着数据库表列的数据类型。如:属性,它对应着数据库表列的数据类型。如:DECLAREstudentnamesystem.student.Sname%TYPE;表表示示变变量量
29、studentname的的数数据据类类型型是是基基于于表表system.student中中的的Sname列列的的数数据据类类型型。如如果果Sname列列的的定定义义改改变变了了,则则studentname的的数数据据类类型也随之改变。型也随之改变。%ROWTYPE实实际际应应用用中中,经经常常要要将将PL/SQL中中的的一一个个记记录录类类型型声声明明为为对对应应于于一一个个数数据据库库表表的的数数据据行行,如如果果该该表表有有若若干干列列,则则声声明明记记录录时时就就需需要要若若干干行行,这这样样的的记记录录声声明明非非常常烦烦琐琐。为为此此,PL/SQL提提供供了了%ROWTYPE运运算算
30、符符。例例如如,要要定定义义一一个个与与表表system.student数数据据行行相相同同的的记记录录变变量量V_student,可以声明如下:可以声明如下:DECLAREV_studentsystem.student%ROWTYPE;表表示示记记录录变变量量V_student是是基基于于表表system.student数数据据行行的的数数据据类类型型。若若表表定定义义改改变变,则则V_student也也随随之之改变。改变。用来给变量赋值及对操作数处理。用来给变量赋值及对操作数处理。1赋值运算符赋值运算符:=作用是将赋值运算符右边表达式作用是将赋值运算符右边表达式的值赋给其左边的变量。的值赋
31、给其左边的变量。2算术运算符:用于进行加、减、乘、除、乘方等算术运算符:用于进行加、减、乘、除、乘方等算术运算,包括加算术运算,包括加+、减、减-、乘、乘*、除、除/、乘方、乘方*。3.1.4PL/SQL运算符:运算符:3关系运算符:用于将一个表达式与另一个表关系运算符:用于将一个表达式与另一个表达式进行比较,包括等于达式进行比较,包括等于=、不等于、不等于或或!=、大于大于、小于、小于=、小于等于、小于等于=、介于介于BETWEEN.AND、测试测试IN、模糊匹配模糊匹配LIKE、是否非空是否非空ISNULL。4逻辑运算符:用于对两个布尔表达式进行逻逻辑运算符:用于对两个布尔表达式进行逻辑运
32、算,包括逻辑与辑运算,包括逻辑与AND、逻辑或逻辑或OR、逻辑逻辑非非NOT。5字符串连接运算符字符串连接运算符|作用是将两个字符串作用是将两个字符串连接起来。连接起来。3.1.5PL/SQL表达式:表达式:由操作数和运算符构成,操作数可以是一由操作数和运算符构成,操作数可以是一个变量、常量或函数,组成表达式的操作数和个变量、常量或函数,组成表达式的操作数和运算符一起决定了该表达式的类型(字符、数运算符一起决定了该表达式的类型(字符、数值、日期等)。表达式可出现在赋值运算符的值、日期等)。表达式可出现在赋值运算符的右边或者作为一个右边或者作为一个PL/SQL语句的一部分。语句的一部分。PL/S
33、QL的控制结构包括顺序、选择、的控制结构包括顺序、选择、NULL和循环等四种结构。和循环等四种结构。除了顺序结构外,除了顺序结构外,PL/SQL主要通过选择、主要通过选择、NULL和循环结构来控制和改变程序执行的逻辑顺和循环结构来控制和改变程序执行的逻辑顺序,从而实现复杂的运算或控制功能。此外,序,从而实现复杂的运算或控制功能。此外,PL/SQL还提供还提供GOTO转移语句。转移语句。3.2PL/SQL控制结构控制结构3.2.1顺顺序序结结构构:按按照照语语句句出出现现的的先先后后顺顺序序执执行行,这这与与任何过程化的语言相同。任何过程化的语言相同。3.2.2选选择择结结构构:PL/SQL中中
34、常常用用的的选选择择结结构构有有以以下下两两种种形式:形式:1IF语句语句语法:语法:IF条件条件1THEN语句语句1;ELSIF条件条件2THEN语句语句2;ELSE语句语句n+1;ENDIF;2CASE语句语句语法:语法:CASE条件选择器条件选择器WHEN值值1THEN语句语句1;WHEN值值nTHEN语句语句n;ELSE语句语句n+1;ENDCASE;例例3.2根据城市的名称查找在该城市的代理人的名称。根据城市的名称查找在该城市的代理人的名称。DECLARECITYVARCHAR2(6):=南昌南昌;BEGINCASECITYWHEN扬扬州州THENDBMS_OUTPUT.PUT_LI
35、NE(老朱老朱);WHEN徐徐州州THENDBMS_OUTPUT.PUT_LINE(老老纪纪);WHEN唐唐山山THENDBMS_OUTPUT.PUT_LINE(老老单单);WHEN南南昌昌THENDBMS_OUTPUT.PUT_LINE(小蔡小蔡);ENDCASE;END;3.2.3NULL结结构构:也也称称空空结结构构,显显式式指指明明不不进进行行任任何何操作。如:操作。如:SETSERVEROUTPUTON;DECLAREV_MarksNumber;V_PassNumber:=0;BEGINIfV_Marks10THENEXIT;ENDIF;ENDLOOP;END;本本程程序序使使用用E
36、XIT来来终终止止循循环环,也也可可以以使使用用EXITWHEN来来终终止循环,程序如下:止循环,程序如下:SETSERVEROUTPUTON;DECLARENUMBINARY_INTEGER:=1;BEGINLOOPDBMS_OUTPUT.PUT_LINE(NUM);NUM:=NUM+1;EXITWHENNUM10;ENDLOOP;END;2WHILE-LOOP-ENDLOOP语法:语法:WHILE条件条件LOOP循环体循环体ENDLOOP;这这种种循循环环结结构构简简称称为为WHILE循循环环,表表示示当当条条件件成成立立时执行循环体,条件不成立时退出循环。时执行循环体,条件不成立时退出循
37、环。例例3.4使用使用WHILE循环输出循环输出110的数值。的数值。SETSERVEROUTPUTON;DECLARENUMBINARY_INTEGER:=1;BEGINWHILENUM=10LOOPDBMS_OUTPUT.PUT_LINE(NUM);NUM:=NUM+1;ENDLOOP;END;3FOR-IN-LOOP-ENDLOOP语语法法:FOR 循循环环变变量量 IN REVERSE 初初值值.终终值值LOOP循环体循环体ENDLOOP;简简称称FOR循循环环,执执行行过过程程是是先先将将循循环环变变量量赋赋以以初初值值,若若未未超超过过终终值值,则则执执行行循循环环体体。每每次次循
38、循环环后后循循环环变变量量自自动动加加1,如如未未超超过过终终值值,则则继继续续执执行行循循环环体体,直直至至循循环环变变量量超超过过终终值值时时退退出出循循环环。若若用用关关键键字字REVERSE,则则每每次次循循环环后循环变量自动减后循环变量自动减1。例例3.5使用使用FOR循环输出循环输出110的数值。的数值。SETSERVEROUTPUTON;DECLARENUMBINARY_INTEGER;BEGINFORNUMIN1.10LOOPDBMS_OUTPUT.PUT_LINE(NUM);ENDLOOP;END;3.2.5GOTO语句语句GOTO语语句句是是一一条条无无条条件件转转移移语语
39、句句,能能够够实实现现程程序序从从一一处处无无条件转移到由标签所标识的语句。语法是条件转移到由标签所标识的语句。语法是:GOTO;其中,其中,Label是定义的标签,是定义的标签,用双尖括号括起来用双尖括号括起来。GOTO语语句句一一般般使使用用在在从从一一个个PL/SQL语语句句块块中中跳跳到到一一个个错错误误处处理理程程序序来来引引发发异异常常。程程序序中中过过多多地地使使用用GOTO语语句句将将导导致致流流程程复复杂杂,这这种种结结构构性性较较差差的的代代码码是是很很难难被被理理解解和和维维护护的的,因因此此PL/SQL提提倡倡尽尽量量不不要要使使用用GOTO语语句句,PL/SQL还还禁
40、禁止止使使用用GOTO语语句句从从外外层层跳跳转转到到内内层层语语句句、循循环环体体、IF语语句句和和CASE语句中。语句中。例例3.6使用使用GOTO语句输出语句输出110的数值。的数值。SETSERVEROUTPUTON;DECLARENUMBINARY_INTEGER:=1;BEGINLOOPDBMS_OUTPUT.PUT_LINE(NUM);NUM:=NUM+1;IFNUM10THENGOTOlabel1;ENDIF;ENDLOOP;NULL;END;习题31.简述简述PL/SQL语句块的分类及构成。语句块的分类及构成。2.简简述述%TYPE和和%ROWTYPE的使用方法。的使用方法。