一直以来,都觉得SQL游标非常的难,直到最近一个星期,碰到了两个对菜鸟来说是很困难的问题:1.一对多的分配;2.多对一的合并 ,才是使我下定决心搞定游标
也许有朋友会听不明白,但摸过ERP的人应该都知道:订单——生产——入库——出货,这些流程并非是一对一的,相反,很多种情况都是开始一对多,到了库存却是多合一……
好了,以上是我学习游标的初衷,现在我记下我所了解的游标的一些语法和用途
declare @a nvarchar(10),@b nvarchar(10),@c nvarhcar(10)
delcare XXX cursor (游标属性) for select a,b,c from tablename
fetch next from XXX into @a,@b,@c
while @@fetch_status = 0 ------必须知道此含义
begin
----------在begin之间处理@a,@b,@c 如 update 、delete、 insert
fetch next from XXX into @a,@b,@c ----一定要在END之前取另外一条记录,否则会死循环……
end
close XXX
deallocate XXX
此处的游标属性在没很熟悉游标的情况下,建议用默认属性 即加任何限定,
而fetch next from XXX into @a,@b,@c 这句表明是取唯一的一条记录值,当初学习的时候,就会想到是一次都取出来做处理…
呵呵 学习的心得也就这么几句话而已,只有尝试过,才知道问题被处理之时的快感,呵呵……努力学习,加油……