首页 > 代码库 > PL/SQL程序设计、流程控制
PL/SQL程序设计、流程控制
PL/SQL是 Procedure Language & Structured Query Language 的缩写
PL/SQL是对SQL语言存储过程语言的扩展
PL/SQL程序由三个块组成,即声明部分、执行部分、异常处理部分。
在语句块的声明部分对变量声明,声明一个变量的语法是:
variable_name [ constant ] type [ not null ] [:=value]
其中:
variable_name 为变量名
type 为类型
value 为变量的初值
PL/SQL结构
DECLARE
/* 声明部分: 在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数 */
BEGIN
/* 执行部分: 过程及SQL 语句 , 即程序的主要部分 */
EXCEPTION
/* 执行异常部分: 错误处理 */
END;
PL/SQL的流程控制语句, 包括如下三类 :
条件语句: IF 语句 CASE语句
循环语句: LOOP语句, EXIT语句
顺序语句: GOTO语句, NULL语句
IF语句的基本形式为 :
IF <布尔表达式> THEN
PL/SQL 和 SQL语句
END IF;
或
IF <布尔表达式> THEN
PL/SQL 和 SQL语句
ELSE
其它语句
END IF;
IF语句的复杂形式为 :
IF <布尔表达式> THEN
PL/SQL 和 SQL语句
ELSIF < 其它布尔表达式> THEN
其它语句
ELSIF < 其它布尔表达式> THEN
其它语句
…… ……
ELSE
其它语句
END IF;
CASE语句的基本形式为 :
CASE selector
WHEN expression1 THEN result1
WHEN expression2 THEN result2
WHEN expressionN THEN resultN
[ ELSE resultN+1]
END CASE;
循环语句
简单循环语句的一般形式:
LOOP
要执行的语句;
EXIT WHEN <条件语句> /*条件满足,退出循环语句*/
END LOOP;
其中:EXIT WHEN 子句是必须的,否则循环将无法停止。
WHILE 循环语句的一般形式:
WHILE <布尔表达式> LOOP
要执行的语句;
END LOOP;
FOR循环语句的一般形式:
FOR 循环计数器 IN [ REVERSE ] 下限 .. 上限 LOOP
要执行的语句;
END LOOP;
其中:
每循环一次,循环变量自动加1;使用关键字REVERSE,循环变量自动减1
跟在IN REVERSE 后面的数字必须是从小到大的顺序,但不一定是整数,可以是能够转换成整数的变量或表达式
可以使用EXIT WHEN子句退出循环
综合实例:
1 declare 2 v_no number(4) :=7369; --声明并初始化变量 3 begin 4 select sal into v_no from emp where empno=v_no; 5 6 if v_no>300 then v_no:=100; --if--then 7 end if; 8 9 while v_no<=200 --while 10 loop 11 v_no := v_no+1; 12 dbms_output.put_line(v_no); 13 end loop; 14 15 for v_no in reverse 0 .. 200--for 16 loop --loop 17 18 dbms_output.put_line(v_no); 19 20 end loop; 21 end;
PL/SQL程序设计、流程控制