Sql server 2005一段简单代码.?

来源:百度知道 编辑:UC知道 时间:2024/07/07 18:16:39
Declare @abc int
Declare @xyz int
Set @abc=10
While @abc<=100
Begin
Set @xyz=
Case floor(@abc/30)
When 0 then @abc*5
When 1 then @abc*10
Else @abc*20
End
Set @abc=@xyz
End
Print @xyz

请问结果为500是怎么来的..!
有谁可以分析一下吗.? 我看了很就不知道是怎么来的..

首先while是一个循环语句,只有在满足while后面的条件时,程序才会停止循环。
第一次循环:
@abc=10
@abc<=100 成立
然后继续往下执行
因为floor(@abc/30) =0

所以程序会执行When 0 then @abc*5
此时的@abc=50
随后将50赋值给@xyz

第二次循环
@abc=50
@abc<=100 成立
然后继续往下执行
因为floor(@abc/30) =1

所以程序会执行When 1 then @abc*10
此时的@abc=500
随后将500赋值给@xyz

第三次循环
@abc=500
@abc<=100 不成立
跳出循环

print @xyz就是将@xyz输出
因为@xyz=500。所以你会看到结果是500

10除以30等于0
于是就乘以5变成50
50还是小于100,再次除以30等于1
所以乘以10,得到500,500>100,不再循环,打印出来

Declare @abc int
Declare @xyz int
Set @abc=10
While @abc<=100
Begin
Set @xyz=
Case floor(@abc/30)
When 0 then @abc*5
When 1 then @abc*10
Else @abc*20
End
Set @abc=@xyz --------其实你把这句去掉会更加的好玩
End
Print @xyz

qbowen回答的非常正确,
就是循环加判断,最后输出,
呵呵,希望能有帮助,^_^