Delphi(程序人生)

Delphi Programer DoubleCat

导航

SQL的游标

SQL的游标


 

什么是游标?游标是做什么用的?怎么用?

-----------------------------------------------------------------------------------------------

1,其实Select 返回的结果集是一个数据表视图,这个视图是没有记录指针的,如果要改变其中的值,只能对这个视图中的数据全体改变

游标,本质上就是数据视图的记录指针

如,A表中价格字段中,大于20的全部打9折,小于20的,打8折,怎么办呢?

二种办法

①用DDL语句

  Update 菜单 Set 单价=单价*0.8 Where 单价<20

 Update 菜单 Set 单价=单价*0.9 Where 单价>20

②用Select 语句采用游标

代码如下

declare @Price Money//定义变量

Declare TheCursor Cursor For Select 单价 From 菜单 For Update Of 单价//这里定义这个游标是在哪个视图上是做什么用的?
Open TheCursor//打开游标

Fetch From TheCursor InTo @Price //取游标中的数据,(取记录指针所指的整条记录)

While @@Fetch_Status =0 //如果记录指针没到尾部
begin
   if @Price<20 begin
      Update 菜单 Set 单价=@Price*0.8 Where Current Of TheCursor //更新当前记录指针所指的数据
   end

   if (@Price>20) and (@Price<100) begin
      Update 菜单 Set 单价=@Price*0.9 Where Current Of TheCursor   
   end
Fetch Next From TheCursor InTo @Price//记录指针向下走一行
end

Close TheCursor//关掉记录指针(关闭游标)
DeAllocate TheCursor//释放游标

-------------------------------------------------------------------------------------------------

1,记住,游标是附在数据视图上的,就像记录指针附在数据表视图上一样

2,使用视图是件很麻烦的事情,虽然他一次可以全搞定,而用DDL语句要二次才搞定,其实用DDL语言也可以一次搞定

Update 菜单 Set 单价=单价*0.8 Where 单价 Between 1 and 20 or 单价 between 21 and 100

-------------------------------------

DoubleCat

 

posted on 2008-06-13 16:26  DoubleCat  阅读(295)  评论(0编辑  收藏  举报