
declare @i int,@result int
set @i=1
set @result=1
while @i<=12
begin
set @result=@result*@i
set @i=@i+1
end
print @result
从With符号标记得到的查询缓存表MyCTE中得到我们需要的值是最后一句的意思。AS之中的句子可以这么局御理解:
选出n=1和njc=1到查询表MyCTE中。union all,关联之后的查询中所得的所有结果。而在SELECT n,njc。。。的语句的意思是, 从表MyCTE中选出所有的n和njc的值,且条件是n小于10,并把n加1和njc与n+1相乘得出来的值加以显示,但是因为其实在MyCTE标识的语句中的SELECT语句,所以选取出的结果会放在缓存表MyCTE中。又因为SELECT语句选择时对于数据的选取是逐条进行比对的,所以当上一条数据比对完成并桐伍岩选取出结果的时候,新的选取结果同时橘兄会加入到查询缓存表MyCTE中,所以Select会对这条新的数据进行筛选,逐步下去,就成啦图中显示的这样。
declare @x int,@num int,@i int,@r intset @x=1
set @num=0
set @i=1
set @r=1
while @x<=5
begin
while @i<=2*@x
begin
set @r=@r*@i
set @i=@i+1
end
set @num=@num+@r
set @x=@x+1
end
print @num --这个地方可能与plsql的输出不相同
以上程序已经在sqlserver2000中运行通过。
如果以上程序语法有和高亮plsql不相同的地方稍加修改即芹悄可。
最后戚首宽结果为:3669866
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)