您的位置:首页 > 数据库

SQL常用流程控制语句总结来源

2007-12-17 22:31 459 查看
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

来源:IT传媒网(www.cniter.com)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: