zoukankan      html  css  js  c++  java
  • PL/SQL之流控制语句

    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语句能够使条件语句的意义更加清晰,并且能够提高程序的可读性;
  • 相关阅读:
    poj 3278 Catch That Cow(bfs+队列)
    poj 1265 Area(Pick定理)
    poj 2388 Who's in the Middle
    poj 3026 Borg Maze(bfs+prim)
    poj 2485 Highways
    变量引用的错误:UnboundLocalError: local variable 'range' referenced before assignment
    Sysbench硬件基准测试
    Sysbench-OLTP数据库测试
    字典
    操作列表
  • 原文地址:https://www.cnblogs.com/hehaiyang/p/4744317.html
Copyright © 2011-2022 走看看