• 存储过程中的流程控制语句


    if语句:

    if  condition1  then ...

    [elseif condition2 then...,...]

    [else...]

    end if 

    例:

    delimiter//

    create procedure example_if(in x int)

    begin 

    if x=1 then

    select 1;

    elseif x =2 then 

    select 2;

    else 

    select 3;

    end if;

    end

    //

    调用存储过程call example_if(2)//

    结果值为2。先判断传入参数的值是否为1,是则输出1,不是则再判断传入的参数是否

    为2,是则输出2,当以上条件都不满足时输出3.

     

    case语句

    case value

             when value then...

            [when value then...]

            [else...]

    end case

    其中,case后面的value表示条件判断的变量,可以为空;when后的value表示变量的取值

    当when后面的value与case后的value值相等时则执行相应then后的语句,否则执行else后

    内容。例:

    delimiter//

    create procedure example_case(in x int)

    begin

    case x 

    when 1 then select 1;

    when 2 then select 2;

    else select 3;

    end case;

    end

    //

     

    while循环语句

    while condition do

    ...

    end while;

    执行while语句时,会先判断condition条件是否为真,是则执行循环体,否则退出循环。

    例:

    delimiter //

    create procedure example_while(out sum int)

    begin

    declare i int default 1;

    declare s in default 0;

    while i<= 100 do

    set s=s+i;

    set i=i+1;

    end while;

    set sum=s;

    end

    //

    调用上述存储过程的语句为:

    call example_while(@s)

    select @s

     

    LOOP循环语句

    LOOP循环语句没有内置的循环条件,但可以通过leave语句退出循环。loop语句表现

    形式为:

    loop

    ...

    end loop

    loop允许某特定语句或语句群的重复执行,实现一个简单的循环构造,其中中间省略的

    部分是需要重复执行的语句。在循环内的语句一直重复至被退出,退出循环用leave语句

    leave语句经常和begin...end一起使用结构为:leave label

    label是语句中标注的名字,自定而来。加上leave关键字就可以用来退出被标注的循环语句。

    下面应用loop语句求前100项的和。首先定义变量i和s,分别用来控制循环的次数和保存前

    100项的和。然后进入该循环体,使s的值加i,之后使i加1并进入下次循环,直到i大于100

    ,通过leave语句退出循环并输出结果。

    delimiter //

    create procedure example_loop(out sum int)

    begin

    declare i int default 1;

    declare s int default 0;

    loop_label:loop

    set s=s+i;

    set i=i+1;

    if i>100 then

    leave loop_label;

    end if;

    end loop;

    set sum=s;

    end

    //

    调用该存储过程的语句为:

    call example_loop(@s)

    select @s

     

    REPEAT循环语句

    repeat循环语句先执行一次循环体,之后判断condition条件,

    为真则退出循环,否则继续执行循环。格式为:

    repeat

    ...

    until condition

    end repeat

    例:

    delimiter //

    create procedure example_repeat(out sum int)

    begin

    delare i int default 1;

    delare s  int default 0 ;

    repeat

    set s=s+1;

    set i=i+1;

    until i>100

    end repeat;

    set sum=s;

    end

    //

    循环语句中还有一个iterate语句,它可以出现在loop、repeat和while语句内,

    其意为“再次循环”。格式如下:

    iterate label

    该语句的格式与leave大同小异,区别在于:leave语句是结束一个循环,而

    iterate语句是重新开始一个循环。

     

     

    与一般程序设计流程控制不同的是:存储过程并不支持for循环。

  • 相关阅读:
    Kinect学习笔记(六)——深度数据测量技术及应用
    [device]/proc/devices and /dev/
    [Eth]Mac/Phy/mdio/Rgmii
    [uboot]uboot如何引导系统
    [网络]Linux一些网络知识
    [基础]sizeof和strlen
    [基础]关于extern指针和数组的用法
    [ucos]了解ucos
    [Linux]gcc/libc/glibc
    [i.MX6q]i.MX6q处理器,linux操作系统平台搭建 从SD卡启动系统
  • 原文地址:https://www.cnblogs.com/Ting-light/p/9548502.html
Copyright © 2020-2023  润新知