• 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语句能够使条件语句的意义更加清晰,并且能够提高程序的可读性;
  • 相关阅读:
    centos7 centos-home 磁盘空间转移至centos-root下
    CACTI优化-流量接口统计total输入和输出流量数据
    shell管理前台进程
    Rancher中ConfigMap使用实例
    Rancher调试微服务
    ssh配置免密登录异常处理
    漏洞复现:ActiveMQ任意文件写入漏洞(CVE-2016-3088)
    ubuntu更新源
    Vulnhub实战靶场:CH4INRULZ: 1.0.1
    CVE-2019-15107 Webmin远程命令执行漏洞复现
  • 原文地址:https://www.cnblogs.com/hehaiyang/p/4744317.html
Copyright © 2020-2023  润新知