(五)PL/SQL条件控制

原创 2018年04月16日 19:20:59

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

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;

Oracle之PL/SQL编程从入门到精通

-
  • 1970年01月01日 08:00

pl/sql 条件控制 IF ELSE

语句一: IF-THEN IF 条件 THEN     执行语句 END IF;   语句二: IF-THEN-ELSE IF 条件 THEN      执行语句 ELSE      执行其他语句 E...
  • HelloCqk1
  • HelloCqk1
  • 2014-07-23 16:05:26
  • 1982

Oracle之课程实验五(pl/sql)

课程名称:Oracle11g数据库应用简明教程   实验题目:实验三使用报表统计各部门人数 姓名:李日中 学号:2010324264班级:10计本3班 实验日期:2013-6-1  成绩:   一、 ...
  • QQ1130141391
  • QQ1130141391
  • 2013-10-22 22:16:43
  • 1338

Oracle:PL/SQL--流程控制(一)——条件结构:if-then、if-then-else、if-then-elsif

–流程控制–条件结构 –1、 if-then 语句语法 if condition then Statements end if;/*if 条件 then 语句(条件成立执行该语...
  • u014455929
  • u014455929
  • 2016-08-31 20:39:00
  • 2044

PL/SQL where 条件中使用case

--建测试表-- CREATE TABLE testwhere  ( testid NUMBER, testname VARCHAR(50) ); CREATE TABLE testwhe...
  • biao1991
  • biao1991
  • 2014-05-05 22:46:52
  • 1695

实验五 PL/SQL程序设计基础

一、实验目的 1)  掌握PL/SQL程序设计基础知识 2)  掌握PL/SQL数据类型、变量和常量的声明 3)  掌握PL/SQL程序的控制结构 4)  掌握PL/SQL程序中游标、异常处理...
  • MJ813
  • MJ813
  • 2016-12-31 20:28:02
  • 1196

怎样记住PL/SQL循环语句

iamlaosong文Oracle PL/SQL的循环控制语句有三种,如何记住呢?很简单,那就是基本结构loop。。。end loop,基本结构前加个while,或者基本结构前加个for。基本结构用e...
  • iamlaosong
  • iamlaosong
  • 2016-05-17 15:12:55
  • 757

[oracle]pl/sql --控制语句if..

--pl/sql学习第三章********************************************* --使用环境  oracle10.2 ;ide;pl/sql developer ...
  • lzz957748332
  • lzz957748332
  • 2014-07-31 00:29:15
  • 3514

PL/SQL 动态Sql拼接where条件

DECLARE SQLSTR VARCHAR(200) := 'SELECT * FROM hr.employees where 1=1'; TYPE EMPCURTYP IS R...
  • u012557814
  • u012557814
  • 2017-03-15 14:57:13
  • 2186

PL/SQL知识总结(1):PL/SQL块结构和流程控制语句

前一段时间系统学习了Oracle PL/SQL的有关知识,内容有点多,所以觉得自己要总结一下,顺便回顾,大家共同学习。PL/SQL的概念PL/SQL是 Procedure Language & Str...
  • xuda27
  • xuda27
  • 2016-07-20 21:54:29
  • 1238
收藏助手
不良信息举报
您举报文章:(五)PL/SQL条件控制
举报原因:
原因补充:

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