PL/SQL循序渐进全面学习教程--课程十二 编写控制结构语句

课程十二 编写控制结构语句
  
  本课重点:
  1、结构控制的的用途和类型
  2、IF 结构
  3、构造和标识不同的循环
  4、使用逻辑表
  5、控制流和嵌套[@more@]课程十二 编写控制结构语句
  
  本课重点:
  1、结构控制的的用途和类型
  2、IF 结构
  3、构造和标识不同的循环
  4、使用逻辑表
  5、控制流和嵌套
  
  注意:以下实例中标点均为英文半角
  
  一、控制执行流
  可以是分支和循环:IF THEN END IF
  IF condition THEN
  statements;
  [ELSIF condition THEN
  statements;]
  [ELSE
  statements;]
  END IF;
  例子:IF V_ENAME='OSBORNE' THEN
  V_MGR:=22;
  END IF;
  这里我们可以注意,PLSQL和C语言或JAVA在条件上的不同,=代表关系运算,而:=代表赋值。
  看一个函数:
  create  FUNCTION calc_val
  (v_start IN NUMBER)
  RETURN NUMBER
  IS
  BEGIN
  IF v_start > 100 THEN
  RETURN (2 * v_start);
  ELSIF v_start >= 50 THEN
  RETURN (.5 * v_start);
  ELSE
  RETURN (.1 * v_start);
  END IF;
  END calc_val;
  现在,虽然我们尚未讲解CREATE 函数或过程,但可以看到IF 条件在其中的作用。
  二、注意LOGIC TABLE中的逻辑对应关系
  1、NOT、AND、OR
  2、任何表达式中含有空值结果都为 NULL
  3、连接字符串中含有空值会把NULL作为 EMPTY STRING
  declare
  v_deptno dept.deptno%type;
  v_loc dept.loc%type;
  V_FLAG BOOLEAN ;
  V_REC BOOLEAN :=FALSE; --此值改为TRUE、NULL、FALSE进行不同的比较
  V_AVA BOOLEAN:=NULL;
  begin
  V_FLAG:=V_REC AND V_AVA;
  IF V_FLAG=TRUE THEN
  DBMS_OUTPUT.PUT_LINE ('TRUE');
  ELSIF V_FLAG=FALSE THEN
  DBMS_OUTPUT.PUT_LINE ('FALSE');
  ELSE
  DBMS_OUTPUT.PUT_LINE ('NULL');
  END IF;
  end;
  /
  值得注意的是:NULL AND FALSE ---> FALSE
  这是在实践中总结出来的。
  三、基本循环基础:
  1、LOOP
  statement1;
  statement2;
  . . .
  EXIT [WHEN condition];
  END LOOP;
  v_ord_id s_item.ord_id%TYPE := 101;
  v_counter NUMBER (2) := 1;
  BEGIN
  . . .
  LOOP
  INSERT INTO s_item (ord_id, item_id)
  VALUES (v_ord_id, v_counter);
  v_counter := v_counter + 1;
  EXIT WHEN v_counter > 10;
  END LOOP;
  2、FOR循环:
  FOR index IN [REVERSE] lower_bound..upper_bound LOOP
  statement1;
  statement2;
  . . .
  END LOOP;
  
  实例:DECLARE
  V_LOWER NUMBER:=1;
  V_UPPER NUMBER:=23;
  BEGIN
  DBMS_OUTPUT.PUT_LINE('');
  FOR I IN V_LOWER..V_UPPER LOOP
  DBMS_OUTPUT.PUT_LINE(I);
  END LOOP;
  END;
  /
  3、WHILE 循环:
  WHILE condition LOOP
  statement1;
  statement2;
  . . .
  END LOOP;
  4、循环是可以多层嵌套的。可以用<
请使用浏览器的分享功能分享到微信等