Oracle流程控制相关

/****************************************************************/
/*  PL/SQL流程控制语句                                          */
/*  1.条件2.循环3.顺序                                   */
/****************************************************************/


/*
IF <布尔表达式> THEN
  PL/SQL 和 SQL语句
END IF;
-----------------------
IF <布尔表达式> THEN
  PL/SQL 和 SQL语句
ELSE
  其它语句
END IF;
-----------------------
IF <布尔表达式> THEN
  PL/SQL 和 SQL语句
ELSIF < 其它布尔表达式> THEN
  其它语句
ELSIF < 其它布尔表达式> THEN
  其它语句
ELSE
  其它语句
END IF;
*/


--创建测试数据
select * from Teststudent;
declare v_name Teststudent.Name%type;
        v_comment varchar2(40);
        v_age Teststudent.Age%type;
Begin
  select age,name into v_age,v_name from Teststudent where id=5;
  if v_age<10 then
    v_comment :=v_name||'是小正太一枚啊';
  elsif v_age<40 then
    v_comment :=v_name||'中年人啊';
  else
    v_comment :=v_name||'算了,你是个老年人';    
  end if;
  dbms_output.put_line(v_comment);
End;
        

--2.Case语句
/*
---------格式一---------
CASE 条件表达式
  WHEN 条件表达式结果1 THEN 
     语句段1
  WHEN 条件表达式结果2 THEN
     语句段2
  ......
  WHEN 条件表达式结果n THEN
     语句段n
  [ELSE 条件表达式结果]
END;
---------格式二---------
CASE 
  WHEN 条件表达式1 THEN
     语句段1
  WHEN 条件表达式2 THEN
     语句段2
  ......
  WHEN 条件表达式n THEN 
     语句段n
  [ELSE 语句段]
END;
*/
--1.
declare v_name Teststudent.Name%type;
        v_age teststudent.age%type;
        v_comment varchar2(40);
Begin
   select age,name into v_age,v_name from teststudent where id=5;
   case v_age 
     when 10 then 
       v_comment:='caishisui';
      when 40 then
        v_comment:='叔叔你好';
      else
        v_comment:='年龄真老啊';
   end case;
   dbms_output.put_line(v_comment);
End;
--2;
select * from teststudent;
declare v_name Teststudent.Name%type;
        v_age teststudent.age%type;
        v_comment varchar2(40);
Begin
  select age,name into v_age,v_name from Teststudent where id=5;
  case
    when v_age<10 then
      v_comment :='小孩';
     when v_age<40 then
       v_comment :='中年';
     else
       v_comment :='老年';
   dbms_output.put_line(v_comment);
   end case;
End;
/*
3.循环:简单循环、while循环、数字循环
*/
--1.简单循环
/*
 LOOP
      要执行的语句;
      EXIT WHEN <条件语句> --条件满足,退出循环语句
  END LOOP;
*/
declare v_i number(2):=0;--刚开始未赋值,悲剧了就
Begin
  loop 
    dbms_output.put_line('当前i值是'||v_i);
    v_i:=v_i+1;
    exit when v_i>10;
  end loop;
End;
--2.while循环
/*
WHILE <布尔表达式> LOOP
    要执行的语句;
END LOOP;
 
*/
declare v_i int :=1;
Begin
while v_i<10
  loop
    dbms_output.put_line('当前V_I值是'||v_i);
    v_i :=v_i+1;
  end loop;
End;
--3.数字循环
/*
[<<循环标签>>]
FOR 循环计数器 IN [ REVERSE ] 下限 .. 上限 LOOP
  要执行的语句;
END LOOP [循环标签];
*/
Begin
  for v_i in  reverse 1..10  loop
    dbms_output.put_line('当前V_I值是'||v_i);
  end loop;
End;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值