SQL常用流程控制语句总结

来源:互联网 发布:2017深圳人口分布数据 编辑:程序博客网 时间:2024/04/29 10:04

总结下平常能用到的较简单的sql流程控制语句~

一 IF ELSE


    IF <条件表达式>
               <命令行或程序块>
   [ELSE [条件表达式]
              <命令行或程序块>] 

例子:

declare  @a int  , @b int

set @a =120

if( (select count(id) from table_0  where id  =@b ) =1)

               insert into table_1  values ( @a,1,1)

else

             insert into table_2  values ( @a,1,1)

意思是:定义变量a 和b  ,初始化a为120,如果表table_0里id等于b的记录有一条的话就将 (a,1,1)插入到表table_1里,否则插入到表table_2里。

 

二 CASE
CASE 命令有两种语句格式


       CASE <运算式>
             WHEN <运算式> THEN <运算式>

               ........................
              WHEN <运算式> THEN <运算式>
              [ELSE <运算式>]
      END


   CASE
              WHEN <条件表达式> THEN <运算式>

               .................
              WHEN <条件表达式> THEN <运算式>
              [ELSE <运算式>]
      END

例子

use pangu
update employee
set e_wage =
case
when job_level = ’1’ then e_wage*2
when job_level = ’2’ then e_wage*3
when job_level = ’3’ then e_wage*4
else e_wage*1.05
end

case 只执行第一个匹配的子句

意思是:更新员工表里e_wage字段的值为原来的2倍,如果该记录的job_level值为1;

更新员工表里e_wage字段的值为原来的3倍,如果该记录的job_level值为2;

更新员工表里e_wage字段的值为原来的4倍,如果该记录的job_level值为3;

 

三  WHILE   BEGIN  BREAK    CONTINUE  END

WHILE <条件表达式>
BEGIN
<命令行或程序块>
[BREAK]
[CONTINUE]
[命令行或程序块]
END

例子:

declare    @a int ,@b int

set  @a=120

while(@a >100)

begin

insert into  talbe  values (@b ,1 ,1 )

set  @a=@a-1

end

 意思是:定义两变量a,b,初始化a等于120 ,如果a大于100,则插入表table一条记录,同时a减1,

循环执行到(@a >100)不成立为止。

 

来个综合点的例子吧,

declare  @a ,@b

set  @a=(select  max(id)  from  talbe_0)

while(@a>100)

    update   table_1  set    x  = case   when   y=0  then  '0'   when  y=1  then '1'   when y=3   then  '3'  end

    update  table_2  set   x2 = case  when    y2=0   then '0'  else '1'  end

set @a=@a-1

end

嗯,终于完了!想象力差点,举的例子都没什么实际意义~

原创粉丝点击