zoukankan      html  css  js  c++  java
  • (五)PL/SQL条件控制

    简述
    决策结构需要程序员指定一个或多个条件要计算,或由程序进行测试,如果条件被确定为真那么一条或多条语句被执行,如果要被执行的其它语句条件被确定为假,则选其它执行块。

    PL/SQL编程语言提供了以下几种类型的决策语句
    语句 描述

    IF - THEN 语句 IF语句关联的条件通过THEN和END IF关键字封闭的语句序列。 如果条件为真,则语句被执行,如果条件为假或NULL,则IF语句什么都不做
    IF-THEN-ELSE 语句 IF语句添加关键字ELSE后面的语句的替代序列。如果条件为假或NULL,语句则只有替换序列得到执行。它确保任一陈述的序列的被执行
    IF-THEN-ELSIF 语句 它可以在几个方案之间进行选择
    Case 语句 像IF语句中,CASE语句选择要执行的语句一个序列。但是选择顺序,CASE语句使用一个选择而不是多个布尔表达式。一个选择器其值被用来选择多个选项之一的表达式
    Searched CASE 语句 所搜索的CASE语句没有选择,它的WHEN子句包含产生布尔值的搜索条件
    内嵌IF-THEN-ELSE 可以使用一个IF-THEN或IF-THEN-ELSIF语句中的另一个IF-THEN或IF-THEN-ELSIF声明

    IF-THEN语句

    IF (a <= 20) THEN
       b:= b+1;
    END IF;

    IF-THEN-ELSE语句

    IF 1 = 2 THEN
      dbms_output.put_line('1 = 2')
    ELSE
     dbms_output.put_line('1 <> 2');
    END IF;

    IF-THEN-ELSIF语句

    使用IF-THEN-ELSIF语句时有几点要牢记。

    它是ELSIF, 而不是 ELSEIF
    一个IF-THEN语句可以有零或一个ELSE语句,它必须跟从ELSIF语句。
    一个IF-THEN语句可以有0到多个ELSIF,它们必须在ELSE之前。
    一旦某个ELSIF成功,任何剩余的ELSIF或其他都不被测试。

    DECLARE
       a number(3) := 66;
    BEGIN
       IF ( a = 6 ) THEN
          dbms_output.put_line('Value of a is 6' );
       ELSIF ( a = 66 ) THEN
          dbms_output.put_line('Value of a is 66' );
       ELSIF ( a = 666 ) THEN
          dbms_output.put_line('Value of a is 666' );
       ELSE
           dbms_output.put_line('the values is matching');
       END IF;
       dbms_output.put_line('the value of a is: ' || a ); 
    END;

    CASE语句

    set serveroutput on
    DECLARE
       grade CHAR(1) := '&Guess';
    BEGIN
       CASE grade
          when 'A' then dbms_output.put_line('AA');
          when 'B' then dbms_output.put_line('BB');
          when 'C' then dbms_output.put_line('CC');
          when 'D' then dbms_output.put_line('DD');
          when 'E' then dbms_output.put_line('EE');
          else dbms_output.put_line('No such grade');
       END CASE;
    END;

    搜索CASE语句

    CASE
        WHEN selector = 'value1' THEN S1;
        WHEN selector = 'value2' THEN S2;
        WHEN selector = 'value3' THEN S3;
        ...
        ELSE Sn;  -- default case
    END CASE;

    嵌套IF-THEN-ELSE语句

    DECLARE
       a number(3) := 100;
       b number(3) := 200;
    BEGIN
       IF( a = 100 ) THEN
          IF( b = 200 ) THEN
             dbms_output.put_line('Value of a is 100 and b is 200' );
          END IF;
       END IF;
       dbms_output.put_line('Exact value of a is : ' || a );
       dbms_output.put_line('Exact value of b is : ' || b );
    END;
  • 相关阅读:
    通过docker-composer启动容器nginx,并完成spring.boot的web站点端口转发
    手写redis的docker文件,通过docker-compose配置redis
    基于Docker Compose搭建mysql主从复制(1主2从)
    ubuntu 14.04 挂载window共享目录
    asp.net mvc,基于aop实现的接口访问统计、接口缓存等
    自定义属性Attribute的运用
    表值参数的使用
    js的title提示
    Android之ViewPager中包含ViewFlipper时实现双滑动嵌套解决父控件干扰问题
    Android之ViewFlipper实现手动+自动切换图片(附加动画效果)
  • 原文地址:https://www.cnblogs.com/Nedved/p/10472437.html
Copyright © 2011-2022 走看看