码迷,mamicode.com
首页 > 数据库 > 详细

PL/SQL中的流控制语句

时间:2015-08-20 12:06:29      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:

1、选择控制语句

--语法1--
IF
条件 THEN 语句; END IF; DECLARE v_Salary NUMBER(8,2); BEGIN SELECT salary INTO v_Salary FROM auths WHERE name=张三; IF v_Salary IS NOT NULL THEN DBMS_OUTPUT.PUT_LINE(v_Salary); END IF; END;
--语法2--
IF 条件 THEN 语句1; ELSE 语句2; END IF; DECLARE v_Salary NUMBER(8,2); BEGIN SELECT salary INTO v_Salary FROM auths WHERE name=张三; IF v_Salary IS NOT NULL THEN DBMS_OUTPUT.PUT_LINE(v_Salary); ELSE DBMS_OUTPUT.PUT_LINE(工资未定); END IF; END;
--语法3--
IF 条件1 THEN 语句1; ELSIF 条件2 THEN 语句2; [ELSE 语句3;] END IF; DECLARE v_Salary NUMBER(8,2); v_Comment VARCHAR2(40); BEGIN SELECT salary INTO v_Salary FROM auths WHERE name=张三; IF v_Salary = 120 THEN v_Comment:=最低工资; ELSIF(v_Salary > 120) AND (v_Salary <= 300) THEN v_Comment:=低工资; ELSE v_Comment:=普通工资; END IF; END;

2、循环控制语句

--语法1--
LOOP 语句;
END LOOP; DECLARE v_name VARCHAR2(10); v_num INTEGER:=1; BEGIN LOOP SELECT name INTO v_name FROM auths WHERE author_code=A0000||TO_CHAR(v_num); v_num:=v_num+1; IF v_num>=10 THEN EXIT; END IF; END LOOP; END; ||为oracle中的字符串连接符; EXIT语句可在LOOP语句中出现多次,但不可以在LOOP语句外使用; DECLARE v_name VARCHAR2(10); v_num INTEGER:=1; BEGIN LOOP SELECT name INTO v_name FROM auths WHERE author_code=A0000||TO_CHAR(v_num); v_num:=v_num+1; EXIT WHEN v_num>=10; END LOOP; END;
--语法2--
<<标号名>> LOOP 语句; END LOOP[标号名]; 标号指用"<<"和">>"括起来的标识符,必须放在LOOP语句的开始,结尾可选放。 在嵌套的LOOP循环中,带标号的循环可以提高程序的可读性。同时,使用EXIT语句不仅可以终止当前的循环,还可以终止任意带标号的循环语句。 DECLARE ... BEGIN <<first_loop>> LOOP LOOP ... EXIT first_loop WHEN ...; END LOOP; END LOOP first_loop; END;
--语法3--
WHILE 条件 LOOP 语句; END LOOP; DECLARE v_name VARCHAR2(10); v_num INTEGER:=1; BEGIN WHILE v_num<10 LOOP SELECT name INTO v_name FROM auths WHERE author_code=A0000||TO_CHAR(v_num); v_num:=v_num+1; END LOOP; END;
--语法4--
FOR 循环变量 IN [REVERSE] 初始值..结束值 LOOP 语句; END LOOP; DECLARE v_name VARCHAR2(10); BEGIN FOR v_num IN 1..9 LOOP SELECT name INTO v_name FROM auths WHERE author_code=A0000||TO_CHAR(v_num); DBMS_OUTPUT.PUT_LINE(v_name); END LOOP; END; DECLARE v_name VARCHAR2(10); v_count NUMBER; BEGIN SELECT COUNT(name) INTO v_count FROM auths FOR v_num IN 1..v_count LOOP SELECT name INTO v_name FROM auths WHERE author_code=A0000||TO_CHAR(v_num); DBMS_OUTPUT.PUT_LINE(v_name); END LOOP; END; 可以引用循环变量; 循环变量的初始值和结束值可以是数据、变量或表达式,但值必须是整数; 允许在执行时动态的指定循环变量的初始值和结束值; 循环变量仅在循环语句中有效,当退出循环时,循环变量无效; 因为循环变量被隐式地定义为局部变量,所有任何同名的全局变量都将被改变量覆盖,如果要引用全局变量,则必须使用标号和点好; 如果在嵌套的循环语句中,内层和外层的循环变量名相同,这时,要在内部循环中使用外部循环的循环变量,必须使用标号和点好;

3、顺序控制语句

GOTO语句是非结构化语句;
NULL语句能够使条件语句的意义更加清晰,并且能够提高程序的可读性;

 

PL/SQL中的流控制语句

标签:

原文地址:http://www.cnblogs.com/hehaiyang/p/4744317.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!