PL/SQL之流程控制语句
该博客介绍PL/SQL 的 流程控制语句 , 包括如下三类
控制语句 : IF 语句
循环语句 : LOOP 语句 , EXIT 语句
顺序语句 : GOTO 语句 , NULL 语句
一 条件语句
(1)语法
①
IF<布尔表达式 > THEN
PL/SQL和 SQL 语句
END IF;
②
IF<布尔表达式 > THEN
PL/SQL和 SQL 语句
ELSE
其它语句
END IF;
③
IF<布尔表达式 > THEN
PL/SQL和 SQL 语句
ELSIF
< 其它布尔表达式 > THEN
其它语句
ELSIF< 其它布尔表达式 > THEN
其它语句
ELSE
其它语句
END IF;
注意:ELSIF别写错
(2)案例如下:
DECLARE
v_empno emp.empno%TYPE;
V_salary emp.sal%TYPE;
V_comment VARCHAR2(35);
BEGIN
SELECT sal INTO v_salary FROM emp WHERE empno=v_empno;
IF v_salary<1500 THEN
V_comment:= ‘ Fairly less’;
ELSIF v_salary <3000 THEN
V_comment:= ‘A little more’;
ELSE
V_comment:= ‘Lots of salary’;
END IF;
DBMS_OUTPUT.PUT_LINE(V_comment);
END;
二 case 表达式
(1)语法
CASE selector
WHEN expression1 THEN result1
WHEN expression2 TH EN result2
WHEN expressionN THEN resultN
[ ELSE resultN+1]
END
(2)案例
DECLARE
V_grade char(1)
V_appraisal VARCHAR2(20);
BEGIN
V_appraisal :=
CASE v_grade
WHEN ‘A’ THEN ‘Excellent’
WHEN ‘B’ THEN ‘Very Good’
WHEN ‘C’ THEN ‘Good’
ELSE ‘No suc h grade’
END;
DBMS_OUTPUT.PUT_LINE(‘Grade:‘||v_grade||’ Appraisal: ‘|| v_appraisal);
END;
三 循环
(1)简单循环
可以用exit退出循环
LOOP
要执行的语句
EXIT WHEN <条件语句>;/*条件满足,退出循环语句*/
END LOOP;
案例如下:
DECLARE
int NUMBER(2) :=0;
BEGIN
LOOP
int := int + 1;
DBMS_OUTPUT.PUT_LINE('int 的当前值为 :'||int);
EXIT WHEN int =10;
END LOOP;
END;
(2)while循环
语法:
WHILE<布尔表达式 > LOOP
要执行的语句
END LOOP;
案例:
DECLARE
x NUMBER :=1;
BEGIN
WHILE x<=10 LOOP
DBMS_OUTPUT.PUT_LINE('X 的当前值为 x);
x:= x+1;
END LOOP;
END;
(3)数字式循环
语法:
每循环一次,循环变量自动加1 ;使用关键字 REVERSE ,循环变量自动减 1 。跟在 IN REVERSE 后面的数字必须是从小到大的顺序, 而且必须是整数,不能是变量或表达式 。可以使用 EXIT 退出循环。
FOR 循环计数器 IN [REVERSE ] 下限 .. 上限 LOOP
要执行的语句
END LOOP;
案例:
BEGIN
FOR int in 1..10 LOOP
DBMS_ OUTPUT.PUT_LINE('int 的当前值为 : '||int);
END LOOP;
END;
(4)标号和GOTO结束循环
语法:
GOTO label;
. . . . .
<<label>>/*标号是用 括起来的标识符*/
案例
DECLARE
V_counter NUMBER := 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE('V_counter 的当前值为 :'||V_counter);
V_counter := v_counter + 1;
IF v_counter > 10 THEN
GOTO l_ENDofLOOP;--跳转标识
END IF;
END LOOP;
<<l_ENDofLOOP>>
DBMS_OUTPUT.PUT_LINE('V_counter 的当前值为 :'||V_counter);
END ;
(5)NULL语句
在PL/SQL 程序中,可以用 null 语句来说明 不用做任何事情 的意思,相当于一个占位符,可以使某些语句变得有意义,提高程序的可读性。
DECLARE
. . .
BEGIN
…
IF v_num IS NULL THEN
GOTO print1;
END IF;
…
<<print1>>
NULL;--不需要处理任何数据。
END;