zoukankan      html  css  js  c++  java
  • 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('生日快乐!');
  • 相关阅读:
    学习进度笔记
    学习进度笔记
    学习进度笔记
    《一级架构师》阅读笔记
    学习进度笔记
    学习进度笔记
    学习进度笔记
    mysql
    error: 'wblog/' does not have a commit checked out
    有用的网页
  • 原文地址:https://www.cnblogs.com/yuanshuang-club/p/13639566.html
Copyright © 2011-2022 走看看