《第7章 PLSQL编程基础.ppt》由会员分享,可在线阅读,更多相关《第7章 PLSQL编程基础.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第8章章 PLSQL编程基础编程基础第第8章章 PLSQL编程基础编程基础 PL/SQL是一种数据库程序设计语言,是是一种数据库程序设计语言,是Oracle数据库系统提供的扩展数据库系统提供的扩展SQL语言。用语言。用户可以使用户可以使用PL/SQL编写过程、函数、程序包、编写过程、函数、程序包、触发器并且存储这些代码。使用触发器并且存储这些代码。使用PL/SQL语言语言可以在各种环境下对可以在各种环境下对Oracle数据库进行访问。数据库进行访问。8.1 PL/SQL概述8.1.1 PL/SQL基本结构基本结构 PL/SQLPL/SQL的块由变量声明、程序代码和异常处理的块由变量声明、程序
2、代码和异常处理的块由变量声明、程序代码和异常处理的块由变量声明、程序代码和异常处理代码代码代码代码3 3部分组成。部分组成。部分组成。部分组成。DECLAREDECLARE-声明一些变量、常量、用户定义的数据类型以及声明一些变量、常量、用户定义的数据类型以及声明一些变量、常量、用户定义的数据类型以及声明一些变量、常量、用户定义的数据类型以及游标等游标等游标等游标等 BEGIN-BEGIN-主程序体,此处用来编写各种主程序体,此处用来编写各种主程序体,此处用来编写各种主程序体,此处用来编写各种PL/SQLPL/SQL语句、语句、语句、语句、函数和存储过程函数和存储过程函数和存储过程函数和存储过程
3、 EXCEPTION-EXCEPTION-异常处理程序,当程序中出现错误时异常处理程序,当程序中出现错误时异常处理程序,当程序中出现错误时异常处理程序,当程序中出现错误时执行这一部分执行这一部分执行这一部分执行这一部分,可以编写异常处理代码可以编写异常处理代码可以编写异常处理代码可以编写异常处理代码 END;END;-主程序体结束部分主程序体结束部分主程序体结束部分主程序体结束部分8.1 PL/SQL概述 8.1.2 PL/SQL结构示例结构示例SET SET ServerOutputServerOutput ON;-(ON;-(打开数据输出函数打开数据输出函数打开数据输出函数打开数据输出函数
4、)declaredeclarex varchar2(10);/*x varchar2(10);/*声明变量声明变量声明变量声明变量*/beginbeginx:=hello;x:=hello;DBMS_OUTPUT.PUT_LINE(xDBMS_OUTPUT.PUT_LINE(x的值为:的值为:的值为:的值为:|x);-|x);-输出变量输出变量输出变量输出变量x x值值值值end;end;8.1 PL/SQL概述8.1.3 PL/SQL程序注释程序注释1 1单行注释单行注释单行注释单行注释 单行注释由两个连字符单行注释由两个连字符单行注释由两个连字符单行注释由两个连字符(-)(-)开始,其注释
5、范围开始,其注释范围开始,其注释范围开始,其注释范围从连字符开始,到行的末尾结束。从连字符开始,到行的末尾结束。从连字符开始,到行的末尾结束。从连字符开始,到行的末尾结束。2 2多行注释多行注释多行注释多行注释 单行注释时,如果注释超过一行,就必须在每单行注释时,如果注释超过一行,就必须在每单行注释时,如果注释超过一行,就必须在每单行注释时,如果注释超过一行,就必须在每一行的开头使用两个连字符。这时就采用多行注释一行的开头使用两个连字符。这时就采用多行注释一行的开头使用两个连字符。这时就采用多行注释一行的开头使用两个连字符。这时就采用多行注释的方式。多行注释由的方式。多行注释由的方式。多行注释
6、由的方式。多行注释由/*/*开头,由开头,由开头,由开头,由*/结尾。结尾。结尾。结尾。8.2 PL/SQL常量和变量定义8.2.1 PL/SQL字符集字符集1 1在定义常量和变量时,名称必须有符合在定义常量和变量时,名称必须有符合在定义常量和变量时,名称必须有符合在定义常量和变量时,名称必须有符合OracleOracle标标标标示符的相应规定,其字符集规定如下:示符的相应规定,其字符集规定如下:示符的相应规定,其字符集规定如下:示符的相应规定,其字符集规定如下:名称必须以字符开头。名称必须以字符开头。名称必须以字符开头。名称必须以字符开头。名称长度不能超过名称长度不能超过名称长度不能超过名称
7、长度不能超过3030个字符。个字符。个字符。个字符。名称中不能包含减号和空格。名称中不能包含减号和空格。名称中不能包含减号和空格。名称中不能包含减号和空格。不能使用不能使用不能使用不能使用PL/SQLPL/SQL保留字作为标示名,例如不能声保留字作为标示名,例如不能声保留字作为标示名,例如不能声保留字作为标示名,例如不能声明变量名为明变量名为明变量名为明变量名为DECLAREDECLARE。标识符名不区分大小写,标识符名不区分大小写,标识符名不区分大小写,标识符名不区分大小写,DBNameDBName和和和和dbnamedbname是完是完是完是完全相同的。全相同的。全相同的。全相同的。标识符
8、中可以包含数字(标识符中可以包含数字(标识符中可以包含数字(标识符中可以包含数字(0 09 9)、下划线()、下划线()、下划线()、下划线(_ _)、)、)、)、“$”$”和和和和“#”#”。8.2 PL/SQL常量和变量定义8.2.2 数据类型数据类型1 1、字符类型、字符类型、字符类型、字符类型 字符类型变量用来存储字符串或者字符数据。字符类型变量用来存储字符串或者字符数据。字符类型变量用来存储字符串或者字符数据。字符类型变量用来存储字符串或者字符数据。其类型包括其类型包括其类型包括其类型包括VARCHAR2VARCHAR2、CHARCHAR、LONGLONG、NCHARNCHAR和和和
9、和NVARCHAR2NVARCHAR2。2 2、数值类型、数值类型、数值类型、数值类型 数值类型变量存储整数或者实数。它包含数值类型变量存储整数或者实数。它包含数值类型变量存储整数或者实数。它包含数值类型变量存储整数或者实数。它包含NUMBERNUMBER、PLS_INTEGERPLS_INTEGER和和和和BINARY_INTEGER BINARY_INTEGER 3 3种基本类型。种基本类型。种基本类型。种基本类型。3 3、日期时间类型、日期时间类型、日期时间类型、日期时间类型 PL/SQLPL/SQL的日期和时间类型包括的日期和时间类型包括的日期和时间类型包括的日期和时间类型包括date
10、date类型、类型、类型、类型、timestamptimestamp类型和类型和类型和类型和intervalinterval类型。类型。类型。类型。8.2 PL/SQL常量和变量定义8.2.2 数据类型数据类型4 4、布尔类型、布尔类型、布尔类型、布尔类型 布尔类型中的惟一类型是布尔类型中的惟一类型是布尔类型中的惟一类型是布尔类型中的惟一类型是BOOLEANBOOLEAN,主要用,主要用,主要用,主要用于控制程序流程。于控制程序流程。于控制程序流程。于控制程序流程。5 5、%type%type类型和类型和类型和类型和%rowtyperowtype类型类型类型类型(1)%type(1)%type
11、类型类型类型类型 在在在在PL/SQLPL/SQL编程中,为了保持某个变量的数据的编程中,为了保持某个变量的数据的编程中,为了保持某个变量的数据的编程中,为了保持某个变量的数据的类型和表中某个字段的数据类型一致,这时我们就类型和表中某个字段的数据类型一致,这时我们就类型和表中某个字段的数据类型一致,这时我们就类型和表中某个字段的数据类型一致,这时我们就可以定义数据类型为可以定义数据类型为可以定义数据类型为可以定义数据类型为%type%type类型。类型。类型。类型。%type%type类型隐式地类型隐式地类型隐式地类型隐式地将变量的数据类型指定为对应列的数据类型。将变量的数据类型指定为对应列的
12、数据类型。将变量的数据类型指定为对应列的数据类型。将变量的数据类型指定为对应列的数据类型。%type%type类型定义变量的形式如下:类型定义变量的形式如下:类型定义变量的形式如下:类型定义变量的形式如下:Variable_nameVariable_name table_name.column_name%typetable_name.column_name%type8.2 PL/SQL常量和变量定义【例例例例8.38.3】根据表根据表根据表根据表empemp中中中中DEPTNODEPTNO字段的值,为姓名为字段的值,为姓名为字段的值,为姓名为字段的值,为姓名为SMITHSMITH的雇员修改工资
13、;若部门号为的雇员修改工资;若部门号为的雇员修改工资;若部门号为的雇员修改工资;若部门号为1010,则工资加,则工资加,则工资加,则工资加100100;若;若;若;若部门号为部门号为部门号为部门号为2020,则工资加,则工资加,则工资加,则工资加300300;否则工资加;否则工资加;否则工资加;否则工资加400400。SET SERVEROUTPUT ONSET SERVEROUTPUT ONdeclaredeclarename name scott.emp.ename%typescott.emp.ename%type:=SMITH;:=SMITH;increment increment sc
14、ott.emp.sal%typescott.emp.sal%type;fandeptfandept scott.emp.deptno%typescott.emp.deptno%type;beginbeginselect select deptnodeptno into into fandeptfandept from from scott.empscott.emp where where enameename=SMITH;=SMITH;if if fandeptfandept=10 then =10 then increment:=100;increment:=100;elsifelsif f
15、andeptfandept=20 then=20 thenincrement:=300;increment:=300;else else increment:=400;increment:=400;end if;end if;update update scott.empscott.emp set set salsal=salsal+increment where +increment where enameename=SMITH;=SMITH;commit;commit;end;end;/8.2 PL/SQL常量和变量定义8.2.2 数据类型数据类型(2)%rowtype(2)%rowtyp
16、e%type%type类型只是针对表中的某一列,而类型只是针对表中的某一列,而类型只是针对表中的某一列,而类型只是针对表中的某一列,而%rowtyperowtype类型则针对表中的一行,使用类型则针对表中的一行,使用类型则针对表中的一行,使用类型则针对表中的一行,使用%rowtyperowtype类类类类型定义的变量可以存储表中的一行数据。型定义的变量可以存储表中的一行数据。型定义的变量可以存储表中的一行数据。型定义的变量可以存储表中的一行数据。%rowtyperowtype类型定义变量的形式如下类型定义变量的形式如下类型定义变量的形式如下类型定义变量的形式如下:Variable_nameVa
17、riable_name table_nametable_name%rowtyperowtype;8.2 PL/SQL常量和变量定义【例例例例8.58.5】使用使用使用使用%rowtyperowtype类型定义变量,如下:类型定义变量,如下:类型定义变量,如下:类型定义变量,如下:SET SERVEROUTPUT ONSET SERVEROUTPUT ONDECLAREDECLAREemp_numberemp_number constant constant scottscott.emp.empno%typeemp.empno%type:=7900;:=7900;one_empone_emp s
18、cott.empscott.emp%rowtyperowtype;beginbeginselect*into select*into one_empone_empfrom from scott.empscott.emp where where empnoempno=emp_numberemp_number;DBMS_OUTPUT.PUT_LINE(DBMS_OUTPUT.PUT_LINE(查询的员工编号为查询的员工编号为查询的员工编号为查询的员工编号为:|:|emp_numberemp_number););DBMS_OUTPUT.PUT_LINE(DBMS_OUTPUT.PUT_LINE(查询
19、的员工姓名为查询的员工姓名为查询的员工姓名为查询的员工姓名为:|one_emp.enameone_emp.ename););DBMS_OUTPUT.PUT_LINE(DBMS_OUTPUT.PUT_LINE(查询的员工职位为查询的员工职位为查询的员工职位为查询的员工职位为:|:|one_emp.jobone_emp.job););DBMS_OUTPUT.PUT_LINE(DBMS_OUTPUT.PUT_LINE(查询的员工工资为查询的员工工资为查询的员工工资为查询的员工工资为:|:|one_emp.salone_emp.sal););end;end;/8.2 PL/SQL常量和变量定义6、记录
20、类型和表类型、记录类型和表类型(1)(1)记录类型记录类型记录类型记录类型 记录类型与表的行结构相似,记录类型定义的记录类型与表的行结构相似,记录类型定义的记录类型与表的行结构相似,记录类型定义的记录类型与表的行结构相似,记录类型定义的变量可以存储由一个或多个字段组成的一行数据。变量可以存储由一个或多个字段组成的一行数据。变量可以存储由一个或多个字段组成的一行数据。变量可以存储由一个或多个字段组成的一行数据。创建记录类型的语法如下:创建记录类型的语法如下:创建记录类型的语法如下:创建记录类型的语法如下:TYPE TYPE record_namerecord_name is is RECORD(
21、field_nameRECORD(field_name data_typedata_type););8.2 PL/SQL常量和变量定义【例例例例8.68.6】在在在在PL/SQLPL/SQL中创建一个记录类型,然后使用该类型中创建一个记录类型,然后使用该类型中创建一个记录类型,然后使用该类型中创建一个记录类型,然后使用该类型定义一个变量,并为这个变量赋值,如下:定义一个变量,并为这个变量赋值,如下:定义一个变量,并为这个变量赋值,如下:定义一个变量,并为这个变量赋值,如下:DECLAREDECLAREtype type emp_typeemp_type is record(is record(
22、empnoempno number(4),ename varchar2(10),job varchar2(9),sal number(7,2);number(4),ename varchar2(10),job varchar2(9),sal number(7,2);one_empone_emp emp_typeemp_type;begin beginselect select empno,ename,job,salempno,ename,job,salinto into one_empone_empfrom from scott.empscott.emp where where empnoem
23、pno=7900;=7900;DBMS_OUTPUT.PUT_LINE(DBMS_OUTPUT.PUT_LINE(查询的员工编号为查询的员工编号为查询的员工编号为查询的员工编号为:|:|one_emp.empnoone_emp.empno););DBMS_OUTPUT.PUT_LINE(DBMS_OUTPUT.PUT_LINE(查询的员工姓名为查询的员工姓名为查询的员工姓名为查询的员工姓名为:|:|one_emp.enameone_emp.ename););DBMS_OUTPUT.PUT_LINE(DBMS_OUTPUT.PUT_LINE(查询的员工职位为查询的员工职位为查询的员工职位为查询的
24、员工职位为:|:|one_emp.jobone_emp.job););DBMS_OUTPUT.PUT_LINE(DBMS_OUTPUT.PUT_LINE(查询的员工工资为查询的员工工资为查询的员工工资为查询的员工工资为:|:|one_emp.salone_emp.sal););end;end;/8.2 PL/SQL常量和变量定义6、记录类型和表类型、记录类型和表类型(2)(2)表类型表类型表类型表类型 使用记录类型只能保存一行数据,这就限制了使用记录类型只能保存一行数据,这就限制了使用记录类型只能保存一行数据,这就限制了使用记录类型只能保存一行数据,这就限制了查询语句返回行数。如果需要返回多行
25、数据,就可查询语句返回行数。如果需要返回多行数据,就可查询语句返回行数。如果需要返回多行数据,就可查询语句返回行数。如果需要返回多行数据,就可以使用表类型,其允许处理多行数据,和表类似。以使用表类型,其允许处理多行数据,和表类似。以使用表类型,其允许处理多行数据,和表类似。以使用表类型,其允许处理多行数据,和表类似。创建表类型的语法如下:创建表类型的语法如下:创建表类型的语法如下:创建表类型的语法如下:TYPE TYPE table_nametable_name is table of is table of data_typedata_type index by index by binar
26、y_integerbinary_integer8.2 PL/SQL常量和变量定义【例例例例8.78.7】在在在在PL/SQLPL/SQL中创建一个表类型,然后使用该表类型中创建一个表类型,然后使用该表类型中创建一个表类型,然后使用该表类型中创建一个表类型,然后使用该表类型定义一个变量,并为这个变量赋值,最后输出变量中的值,定义一个变量,并为这个变量赋值,最后输出变量中的值,定义一个变量,并为这个变量赋值,最后输出变量中的值,定义一个变量,并为这个变量赋值,最后输出变量中的值,如下:如下:如下:如下:DECLAREDECLARETYPE TYPE myempmyemp is table of i
27、s table of scott.emp%rowtypescott.emp%rowtype index by index by binary_integerbinary_integer;NewempNewemp myempmyemp;beginbeginnewemp(1).empno:=6800;newemp(1).ename:=newemp(1).empno:=6800;newemp(1).ename:=tracytracy;newemp(1).job:=cleark;newemp(1).sal:=2500;newemp(1).job:=cleark;newemp(1).sal:=2500;
28、newemp(2).empno:=6900;newemp(2).ename:=newemp(2).empno:=6900;newemp(2).ename:=tetetete;newemp(2).job:=manager;newemp(2).sal:=4000;newemp(2).job:=manager;newemp(2).sal:=4000;DBMS_OUTPUT.PUT_LINE(newemp(1).empno|,|DBMS_OUTPUT.PUT_LINE(newemp(1).empno|,|newemp(1).ename|,|newemp(1).job|,|newemp(1).sal);
29、newemp(1).ename|,|newemp(1).job|,|newemp(1).sal);DBMS_OUTPUT.PUT_LINE(newemp(2).empno|,|DBMS_OUTPUT.PUT_LINE(newemp(2).empno|,|newemp(2).ename|,|newemp(2).job|,|newemp(2).sal);newemp(2).ename|,|newemp(2).job|,|newemp(2).sal);end;end;/8.3 条件语句条件语句8.3.1 IF条件语句条件语句在在在在PL/SQLPL/SQL块中,块中,块中,块中,IF IF 条件语句
30、的结构如下:条件语句的结构如下:条件语句的结构如下:条件语句的结构如下:IF IF THEN THEN nELSIF ELSIF THEN THEN n ELSE ELSE END IF;END IF;8.3 条件语句条件语句【例例例例8.88.8】在在在在PL/SQLPL/SQL语句中,使用语句中,使用语句中,使用语句中,使用IFIF条件语句判断条件语句判断条件语句判断条件语句判断成绩的不同等级,如下:成绩的不同等级,如下:成绩的不同等级,如下:成绩的不同等级,如下:DECLAREDECLAREscore integer:=65;score integer:=65;beginbeginif
31、score=90 thenif score=90 thenDBMS_OUTPUT.PUT_LINE(DBMS_OUTPUT.PUT_LINE(优秀优秀优秀优秀););elsifelsif score=80 then score=80 thenDBMS_OUTPUT.PUT_LINE(DBMS_OUTPUT.PUT_LINE(良好良好良好良好););elsifelsif score=60 then score=60 thenDBMS_OUTPUT.PUT_LINE(DBMS_OUTPUT.PUT_LINE(及格及格及格及格););elseelseDBMS_OUTPUT.PUT_LINE(DBMS
32、_OUTPUT.PUT_LINE(不及格不及格不及格不及格););end if;end if;end;end;/8.3 条件语句条件语句8.3.2 CASE条件语句条件语句在在PL/SQL块中,块中,case条件语句的结构如下:条件语句的结构如下:1 1、简单、简单、简单、简单CASECASE表达式表达式表达式表达式CASE CASE WHEN WHEN THEN 1 THEN 值值值值1 1 WHEN WHEN THEN 2 THEN 值值值值2 2 WHEN WHEN THEN THEN 值值值值n n ELSE ELSE 值值值值n n+1+1END;END;8.3 条件语句条件语句8.
33、3.2 CASE8.3.2 CASE条件语句条件语句条件语句条件语句2 2、搜索、搜索、搜索、搜索CASECASE表达式表达式表达式表达式CASECASEWHEN condition1 THEN results;WHEN condition1 THEN results;WHEN condition2 THEN results;WHEN condition2 THEN results;WHEN WHEN conditionNconditionN THEN THEN resultNresultN;ELSE ELSE default_resultdefault_result;End CASE;End
34、 CASE;8.3 条件语句条件语句【例例例例8.98.9】在在在在PL/SQLPL/SQL语句中,使用语句中,使用语句中,使用语句中,使用CASECASE条件语句判断成绩的不条件语句判断成绩的不条件语句判断成绩的不条件语句判断成绩的不同等级,如下:同等级,如下:同等级,如下:同等级,如下:SET SERVEROUTPUT ONSET SERVEROUTPUT ONDECLAREDECLAREv_gradev_grade VARCHAR2(20):=VARCHAR2(20):=良好良好良好良好;BEGINBEGINCASE CASE v_gradev_gradeWHEN WHEN 不及格不及格
35、不及格不及格 THEN DBMS_OUTPUT.PUT_LINE(THEN DBMS_OUTPUT.PUT_LINE(成绩成绩成绩成绩 60);60);WHEN WHEN 及格及格及格及格 THEN DBMS_OUTPUT.PUT_LINE(60=THEN DBMS_OUTPUT.PUT_LINE(60=成绩成绩成绩成绩 70);70);WHEN WHEN 中等中等中等中等 THEN DBMS_OUTPUT.PUT_LINE(70=THEN DBMS_OUTPUT.PUT_LINE(70=成绩成绩成绩成绩 80);80);WHEN WHEN 良好良好良好良好 THEN DBMS_OUTPUT.
36、PUT_LINE(80=THEN DBMS_OUTPUT.PUT_LINE(80=成绩成绩成绩成绩 90);90);WHEN WHEN 优秀优秀优秀优秀 THEN DBMS_OUTPUT.PUT_LINE(90=THEN DBMS_OUTPUT.PUT_LINE(90=成绩成绩成绩成绩 =100);=100);ELSE DBMS_OUTPUT.PUT_LINE(ELSE DBMS_OUTPUT.PUT_LINE(输入有误输入有误输入有误输入有误););END case;END case;END;END;/8.4 循环语句循环语句8.4.1 LOOP循环语句循环语句(1)(1)循环语句循环语句循
37、环语句循环语句LOOPEXITENDLOOPEXITEND此语句的功能是重复执行循环体中的程序块,直到此语句的功能是重复执行循环体中的程序块,直到此语句的功能是重复执行循环体中的程序块,直到此语句的功能是重复执行循环体中的程序块,直到执行到执行到执行到执行到EXITEXIT语句,则退出循环。语句,则退出循环。语句,则退出循环。语句,则退出循环。LOOPLOOP 1 IF IF THEN THEN EXIT EXIT END IF END IF 2 END LOOP;END LOOP;8.4 循环语句循环语句【例例例例8.118.11】LOOPEXITEND LOOPEXITEND语句示例语句示
38、例语句示例语句示例SET SET ServerOutputServerOutput ON;ON;DECLAREDECLARE v_Numv_Num INTEGER:=1;INTEGER:=1;v_Sumv_Sum INTEGER:=0;INTEGER:=0;BEGINBEGIN LOOP LOOP v_Sumv_Sum:=:=v_Sumv_Sum+v_Numv_Num;dbms_output.put_line(v_Numdbms_output.put_line(v_Num););IF IF v_Numv_Num=100 THEN=100 THEN EXIT;EXIT;END IF;END IF
39、;dbms_output.put_linedbms_output.put_line(+);(+);v_Numv_Num:=:=v_Numv_Num+1;+1;END LOOP;END LOOP;dbms_output.put_linedbms_output.put_line(=);(=);dbms_output.put_line(v_Sumdbms_output.put_line(v_Sum););END;END;/8.4 循环语句循环语句8.4.1 LOOP循环语句循环语句(2)循环语句循环语句LOOPEXIT WHENEND 此语句的功能是重复执行循环中的程序块,此语句的功能是重复执行循环
40、中的程序块,直到满足直到满足EXIT WHEN后面的判断语句,则退后面的判断语句,则退出循环。出循环。LOOP EXIT WHEN END LOOP;8.4 循环语句循环语句【例例例例7.127.12】LOOPEXIT WHENEND LOOPEXIT WHENEND语句示例语句示例语句示例语句示例SET SET ServerOutputServerOutput ON;ON;DECLAREDECLARE v_Numv_Num INTEGER:=1;INTEGER:=1;v_Sumv_Sum INTEGER:=0;INTEGER:=0;BEGINBEGIN LOOP LOOP v_Sumv_Su
41、m:=:=v_Sumv_Sum+v_Numv_Num;dbms_output.put_line(v_Numdbms_output.put_line(v_Num););EXIT WHEN EXIT WHEN v_Numv_Num=100;=100;dbms_output.put_linedbms_output.put_line(+);(+);v_Numv_Num:=:=v_Numv_Num+1;+1;END LOOP;END LOOP;dbms_output.put_linedbms_output.put_line(=);(=);dbms_output.put_line(v_Sumdbms_ou
42、tput.put_line(v_Sum););END;END;/8.4 循环语句循环语句8.4.2 WHILE循环语句循环语句 循环语句循环语句循环语句循环语句WHILELOOPEND LOOPWHILELOOPEND LOOP此语句的功能是当此语句的功能是当此语句的功能是当此语句的功能是当WHILEWHILE后面的条件语句成立时,后面的条件语句成立时,后面的条件语句成立时,后面的条件语句成立时,重复执行循环体重的程序块。循环语句重复执行循环体重的程序块。循环语句重复执行循环体重的程序块。循环语句重复执行循环体重的程序块。循环语句WHILELOOPEND LOOPWHILELOOPEND LO
43、OP的语法结构如下:的语法结构如下:的语法结构如下:的语法结构如下:WHILE WHILE LOOPLOOP END LOOP;END LOOP;8.4 循环语句循环语句8.4.3 FOR循环循环 循环语句循环语句循环语句循环语句FORINLOOPEND LOOPFORINLOOPEND LOOP此语句将定义一个循环变量,并指定循环变量的初此语句将定义一个循环变量,并指定循环变量的初此语句将定义一个循环变量,并指定循环变量的初此语句将定义一个循环变量,并指定循环变量的初始值和终止值。每循环一次循环变量自动始值和终止值。每循环一次循环变量自动始值和终止值。每循环一次循环变量自动始值和终止值。每循环一次循环变量自动1 1。FORINLOOPEND LOOPFORINLOOPEND LOOP语句的语法结构如语句的语法结构如语句的语法结构如语句的语法结构如下:下:下:下:FOR FOR IN IN .LOOPLOOP END LOOP;END LOOP;