SQL server(三)流程控制

--流程控制

--begin end --语句块,将多个t-sql 语句组合成一个逻辑块,当流程控制语句必须执行一个包含两条或两条以上的t-sql语句时,使用begin end、
begin
    declare @a int;
    declare @b int;
    declare @c int;
    select @a=1,@b=2,@c=3;
    if @a>=1
        begin --执行多条SQL操作时,使用begin end 语句块,否则会报错
            print(@a);
            print(@b);
        end;
    else
        print(@c);
end;

-- if 结构语法如下:
    -- if《条件表达式》
            -- {命令行|程序块}
begin
    declare @num int;
    set @num = 10;
    if @num%2 =0
        print('是偶数!');
end;

--case 语句进行多重选择 比if then 结构有更多的选择和判断机会避免多重 if then嵌套循环
--case 语法
    -- case input_expression
        --when when_expression then result_expression
            --[...n]
            --[
                --else else_result_expression
            --end

select id,name,age,
性别 =case
when gender='man' then '男人'
when gender='woman' then '女人'
else '人妖'
end
from stduser;

--while 子句 是t-sql 语句支持的循环结构,在条件为真的情况下,while 字句可以循环的执行其最后的一条t-sql命令,
--如果想循环执行一组命令则需要和begin end 配合使用。
-- while <条件表达式>
--   begin
--        <命令行|程序块>
--     end

declare @n int,@sum int;
set @n=1;
set @sum=0;
while @n<=10
    begin
        set @sum +=  @n;
        set @n += 1;
        print(@sum);
        print(@n);
    end;

--while ... continue ...break
    -- 循环while 字句还可以用continue 和break 命令控制while循环中语句的执行。
    --while <条件>
    --    begin
    --        if <条件>
    --            continue 跳过操作    
    --        if <条件>
    --            break 终止循环操作
    --    end

begin
    declare @n1 int;
    set @n1 = 1;
    while @n1 < 10
        begin
            if @n1=5 -- 当 @n1 的值为 5时 就跳过 ,后面的代码就不去执行了,-- 注意 ,如果在if 里面会执行多条sql 那么请一定使用begin end 语句块来包裹
                begin
                    set @n1 = 6;
                    continue
                end;
            if @n1=8 -- 当@n1 的值为 8 时 就结束循环
                break
            print(@n1);
            set @n1 += 1;
        end;
end;

--return 语句用于从查询或过程中无条件退出,return 语句可在任何时候用于从过程,批处理,或语句块中退出,位于return之后的语句不会被执行。
-- return 整数值
-- return命令返回的内定值。
-- -1 找不到对象,    -7 资源错误,如磁盘空间不足
-- -2 数据类型错误    -8 非致命的部内部错误
-- -3 死锁              -9 以达到系统的极限
-- -4 违反权限原则      -10或-11 致命的内部不一致性错误
-- -5 语法错误          -12 表或者指针破坏
-- -6 用户造成的一般错误    -13数据库破坏
-- F 程序执行成功

begin
    declare @n2 int;
    set @n2 = 1;
    while @n2 < 10
        begin
            if @n2 = 3
                return
            print(@n2);
            set @n2 += 1;
        end;
end;

-- waitfor 指定触发器,存储过程,或者事务执行的时间,时间间隔,或者事件,还可以用来暂时停止程序的执行,直到所设定的等待时间已经过才继续往下执行。
-- 语法 waitfor delay<'时间'>| time<'时间'>
-- 时间必须为 datetime 类型的数据,如: 111527,单不能包含日期
-- delay 用来设定等待时间,最多为24小时
-- time 用来设定等待结束的时间点

-- 例如,等待3秒后显示祝你升入快乐
waitfor delay '0:00:03' print('生日快乐!');
原文地址:https://www.cnblogs.com/yuanshuang-club/p/13639566.html