PL/SQL 流程控制

一.逻辑控制

1.if语句

在PL/SQL中 if语句的格式如下:

IF CONDITION THEN
  LOGIC CODE
   ELSIF THEN
  LOGIC CODE
   ...
   ELSE 
  LOGIC CODE
   END IF;
    

就是普通的逻辑判断代码,没什么可说的.

常用于实现排序.

例如冒泡排序

2.case when语句

前情提要 case when 语句没什么作用(自我感觉)

在PL/SQL中 case when语句的格式如下:

CASE VAR
  WHEN VALUE1 THEN 
    LOGIC CODE 
  WHEN VALUE2 THEN 
    LOGIC CODE 
      ...
   ELSE 
     LOGIC CODE
   END CASE;

上述这种格式 在case后面跟了 变量名

所以在 when后面判断时 不能跟 表达式 只能跟值

CASE
  WHEN EXP1 THEN
    LOGIC CODE
  WHEN EXP2 THEN
    LOGIC CODE
  ...
  ELSE
    LOGIC CODE
END CASE;

在这种格式中 由于CASE后面没有跟变量名

所以在when做判断的时候 跟的是EXP 而不是VALUE

二.循环语句

1.for循环

似乎不论是哪种编程语言的循环 都会涉及到FOR 循环

提起for循环我们就会想到:

FOR(I;I<.LENGTH;I++);
--不论是C 还是C++ 又或者是JAVA 都是一样的格式
--但是在PL/SQL中 变了
FOR I IN 1..VAULE LOOP
   LOGIC CODE
END LOOP;
--值得注意的是 在FOR 循环中 I是一个非人为定义的变量
--也就是说 不用在DECLARE 中定义 I NUMBER(5);
--这个循环因子不论叫什么 都不可以自己定义

在PL/SQL 中 也只有FOR 才可以实现多层重复循环

2.loop循环

LOOP
   EXIT WHEN CONDITION;--这里的循环因子需要自己定义
 LOGIC CODE 
END LOOP;

3.while循环

WHILE CONDITION LOOP
LOGIC CODE
END LOOP;

三.标签

GOTO<A>

--goto标签<<标签名>> -了解
--语法
goto <<标签名>>

declare
i number(2);
begin
  i:=1;
  <<A>>
  if i>9 then
    return; --程序结束
  end if;
  dbms_output.put_line('goto-'||i);
  i:=i+1;
  goto A;
end;


--控制循环退出语句
exit/continue 只能使用在循环体内
return



begin
  for i in 1..9 loop 
    if i=3 then
      exit; --退出循环
    end if;
    dbms_output.put_line('当前循环值:'||i);
  end loop;
  dbms_output.put_line('程序结束');
end;

begin
  for i in 1..9 loop 
    if i=3 then
      continue; --跳过当前循环
    end if;
    dbms_output.put_line('当前循环值:'||i);
  end loop;
  dbms_output.put_line('程序结束');
end;

begin
  for i in 1..9 loop 
    if i=3 then
      return; --程序结束
    end if;
    dbms_output.put_line('当前循环值:'||i);
  end loop;
  dbms_output.put_line('程序结束');
end;

--特殊用法
begin
  for i in 1..9 loop 
    return when i=3;
    dbms_output.put_line('当前循环值:'||i);
  end loop;
  dbms_output.put_line('程序结束');
end;

begin
  for i in 1..9 loop
    if i=3 then
      goto A;
    end if;
    dbms_output.put_line('当前循环值:'||i);
  end loop;
  <<A>>
  dbms_output.put_line('程序结束');
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值