zoukankan      html  css  js  c++  java
  • 存储过程中的流程控制语句

    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循环。

  • 相关阅读:
    [kuangbin带你飞]专题十二 基础DP1 E
    hdu 1203 I NEED A OFFER! (01背包)
    hdu 2602 Bone Collector (01背包)
    hdu 4513 吉哥系列故事——完美队形II (manacher)
    hdu 2203 亲和串 (KMP)
    hdu 1686 Oulipo (KMP)
    hdu 1251 统计难题 (字典树)
    hdu 2846 Repository (字典树)
    hdu 1711 Number Sequence (KMP)
    poj 3461 Oulipo(KMP)
  • 原文地址:https://www.cnblogs.com/Ting-light/p/9548502.html
Copyright © 2011-2022 走看看