条件控制

原创 2015年11月21日 16:35:59

条件控制:

If语句:

--条件控制之if语句

--使用条件控制,可以基于某种条件来控制程序的执行流

--PL/SQL有3种类型的条件控制: IF、ELSIF和CASE语句

--IF语句有两种形式:

--1)IF-THEN语句是最基本的条件控制形式,其语法结构如下所示:

IF  condition  THEN 

  STATEMENT 1; 

  ……

  STATEMENT n;

END IF; (END和IF之间有一个空格)

 

--示例1:两个数字值存储在变量v_num1和v_num2中,

--如果v_num1大于v_num2,则交换两个数字并把它们

--在屏幕上打印出来

declare

  v_num1 number := 5;

  v_num2 number := 3;

  v_temp number; --该变量用于在交换过程中临时保存某个变量的值

begin

  --条件判断

  if v_num1 > v_num2 then

    --交换

    v_temp := v_num1;

    v_num1 := v_num2;

    v_num2 := v_temp;

  end if;  

 

  --打印

  dbms_output.put_line('交换之后:');

 dbms_output.put_line('v_num1='||v_num1);

 dbms_output.put_line('v_num2='||v_num2);

end;

IF-THEN-ELSE语句

--2)使用IF-THEN-ELSE语句,可以指定两组语句

--语法如下: 

IF condition THEN 

   STATEMENT 1; 

ELSE 

   STATEMENT 2; 

END IF; 

STATEMENT 3;

--示例2:判断用户提供的数字是否为偶数并打印结果

declare

  v_num number := &sv_num;

begin

  --判断

  if mod(v_num,2) = 0 then

     dbms_output.put_line('偶数');

  else

     dbms_output.put_line('奇数');  

  end if;    

end;  

 

 

--NULL条件   

--在某些情况下,IF语句中所使用的条件的计算值

--可能是NULL,而不是TRUE或者FALSE。

 

--对于IF-THEN结构,如果相关的条件计算值为NULL,

--则不执行指定的语句,会继续执行END IF之后的

--第1条可执行语句。

 

--对于IF-THEN-ELSE语句,当相关的条件计算值为NULL时,

--会执行保留字ELSE所指定的语句 

 

--示例3:IF条件的计算结果是NULL

declare

  v_num1 number := 0;

  v_num2 number; --默认值为null

begin

  if v_num1 = v_num2 then

    dbms_output.put_line('v_num1 =v_num2');   

  else

    dbms_output.put_line('v_num1 !=v_num2');  

  end if;   

end;  

 

 

--示例4:使用IF-THEN语句来测试用户所提供的日期是

--否是星期六或者星期天

declare

  v_date date :=to_date('&sv_date','yyyy-mm-dd');

  v_day varchar2(9);--保存某一天的名字

begin

  --得到特定日期代表的那一天的名字

  v_day := rtrim(to_char(v_date,'DAY')); 

  --测试v_day的值

  --dbms_output.put_line(v_day); 

 

  --测试是否为周六日

  if v_day in ('星期六','星期日') then

    dbms_output.put_line('周末'); 

  end if;

 

  dbms_output.put_line('Done...'); 

end;

  

 

--ELSIF语句的结构如下所示:

IF  condition 1  THEN 

  STATEMENT 1; 

ELSIF condition 2  THEN    --注意ELSIF中只有1个E

  STATEMENT 2; 

ELSIF  condition 3  THEN 

  STATEMENT 3; 

  ……

[ ELSE ] 

  [ STATEMENT N ];

END IF;

 

--elsif语句用来提供3个以上的执行分支

--示例6:判断用户输入的数字是0、正数还是负数

declare

  v_num number := &sv_num;

begin

  --判断

  if v_num < 0 then

    dbms_output.put_line('负数');

  elsif v_num = 0 then

    dbms_output.put_line('0');   

  else

    dbms_output.put_line('正数');

  end if;

end;

 

 

嵌套的if语句

--各种形式的if语句可以互相嵌套使用,没有任何限制

 

--所谓嵌套的if,就是指在一个条件判断分支的内部,如果

--需要,可以再开一个条件判断

 

--示例9:使用-4和3进行测试

declare

  v_num1 binary_integer := &sv_num1;

  v_num2 binary_integer := &sv_num2;

  v_total binary_integer;

begin

  --如果第一个数大于第二个

  if v_num1 > v_num2 then

    dbms_output.put_line('现在在外部if的if部分');  

    v_total := v_num1 - v_num2;

  else

    dbms_output.put_line('现在在外部if的esle部分');  

    v_total := v_num1 + v_num2; 

    

    --判断和值是否为负的

    if v_total < 0 then

      dbms_output.put_line('现在在内部if的if部分');  

      v_total := v_total*(-1);

    end if;

    

  end if;  

  

 dbms_output.put_line('v_total='||v_total);  

  

end;

 

case语句

--条件控制之case语句

 

--case语句完成和if同样的工作,都是进行条件判断

 

--CASE语句存在两种形式: simple CASE和搜索式CASE 

--Simple CASE语句具有如下结构: 

CASE  selector 

      WHEN expression_1 THEN  statement 1; 

      WHEN expression_2 THEN  statement 2; 

      ……

      WHEN expression_n THEN statement n; 

      ELSE  statementn+1; 

END CASE;

    

--示例1:使用simple  CASE语句判断用户输入的数字

--是否为偶数

declare

  v_num number := &sv_num;

  v_flag number;

begin

  --得到数的除2余数

  v_flag := mod(v_num,2);  

 

  --判断

  case v_flag

    when 0 then

      dbms_output.put_line('偶数');

    else

      dbms_output.put_line('奇数'); 

  end case;

  

  dbms_output.put_line('Done...');

end;

 

 

--2搜索式CASE语句的语法如下所示: 

CASE 

     WHEN search condition_1 THEN  statement 1; 

     WHEN search condition_2 THEN  statement 2; 

     WHEN search condition_n THEN  statement n; 

     [ELSE statementn+1]; 

END CASE;

 

  

--示例2:使用搜索式CASE语句改造上例

declare

  v_num number := &sv_num;

  --v_flag number;

begin

  --得到数的除2余数

  --v_flag := mod(v_num,2);  

 

  --判断

  case 

    when mod(v_num,2)=0 then

      dbms_output.put_line('偶数');

    else

      dbms_output.put_line('奇数'); 

  end case;

  

  dbms_output.put_line('Done...');

end;

 

--两种case语句的比较

--1、语法上:

--1)简单case有选择器变量,而搜索式case没有

--2)简单case的when后面是一个值,而搜索式case的

--when后面是一个布尔表达式

 

--2、使用上

--1)搜索式case的比较过程很直观,直接在代码上可以看出来,

--而简单case的比较过程在代码上是看不出来的

--2)搜索式case代码更加简洁,可以节省变量的使用

 

 

 

--示例3:使用simple  CASE表达式判断用户输入的数字

--是否为偶数

declare

  v_num    number :=&sv_num;

  v_flag   number;

  v_result varchar2(20);

begin

  --得到数的除2余数

  v_flag := mod(v_num, 2);

 

  --

  v_result := case v_flag

               when 0 then

                '偶数'

               else

                '奇数'

             end;

 

  dbms_output.put_line(v_result);

end;

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

条件传送和条件控制转移

        条件控制转移指根据代码的条件结果来选择执行的路径,条件传送指先把结果执行,在根据条件结果选择结果值 在相同的情况下,条件传送性能比条件控制转移高...
  • a1009563517
  • a1009563517
  • 2015年08月13日 08:53
  • 623

Shell脚本的条件控制和循环语句

条件判断:if语句 语法格式: ? 1 2 3 4 if [ expression ] then Sta...
  • suyuwen1
  • suyuwen1
  • 2016年05月27日 15:54
  • 701

黑马程序员————流程控制语句——循环结构

------- android培训、java培训、期待与您交流! ---------- 流程控制语句:可以控制程序的执行流程。 分类:顺序结构,选择结构和循环结构。 顺序结构在我们所设计的程序中是...
  • jinger5186
  • jinger5186
  • 2015年04月29日 15:55
  • 280

Python3条件控制、循环控制

第一
  • jc_benben
  • jc_benben
  • 2017年04月22日 19:49
  • 119

[2017.10.1]条件控制&循环控制

一. java三大流程控制 1. 顺序控制: 依次执行代码 2. 条件控制: (1)if语句: ①格式: if(条件){ //实现逻辑 } ②条件:          ...
  • Lily_Evans
  • Lily_Evans
  • 2017年10月06日 15:17
  • 107

流程控制--if条件

一、if的语法 在Python中,if语句包含以下部分: 1.if 关键字 2.条件(既求值为True或False的表达式) 3.冒号: 4.在下一行开始,缩进代码块(称...
  • shuaizy2017
  • shuaizy2017
  • 2017年12月25日 22:31
  • 21

Bash脚本条件判断和控制流结构

Bash位置参数有两种简单的方法可以将用户输入读入bash中的变量。第一个方法是使用read提示用户输入(使用-p选项)并将其直接存储到一个或多个变量。交互式read -p ‘Enter your f...
  • xiaojun_Fairy
  • xiaojun_Fairy
  • 2017年06月22日 00:47
  • 222

随笔三十六:条件传送指令

实现条件操作的传统方法是利用控制的条件转移。这种机制简单而通用,但是在现代处理器上,它可能回非常的低效率。         数据的条件转移是一种替代的策略。这种方法先计算一个条件操作的两种结果,然后...
  • HMSIWTV
  • HMSIWTV
  • 2012年07月17日 17:46
  • 1798

Shell脚本入门(七) - 条件控制语句: case

条件控制语句还有一个case,对于需要多个elif的可以使用casechangs
  • jolingogo
  • jolingogo
  • 2014年10月20日 16:58
  • 1047

C#对excel的操作【条件表达式】

//获得区域Excel.Range range = xSheet.get_Range(rangeFrom, rangeTo);//创建条件表达式 Excel.FormatCondition condi...
  • lx_lhy
  • lx_lhy
  • 2009年09月24日 09:28
  • 1126
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:条件控制
举报原因:
原因补充:

(最多只允许输入30个字)