PL/SQL之流程控制语句

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;

猜你喜欢

转载自blog.csdn.net/hcyxsh/article/details/114979323
今日推荐