如何在SQL Server 2008中的存储过程中写入游标

问题描述

仅使用一个简单的UPDATE语句有什么问题?

UPDATE dbo.Coupon
SET NoofUses = (SELECT COUNT(*) FROM dbo.CouponUse WHERE Couponid = dbo.Coupon.ID)

这就是所有需要的!没有凌乱和复杂的游标,没有循环,没有RBAR(逐行扫描)处理......只是一个漂亮,简单,干净的基于集合的sql语句。

解决方法

我的数据库中有两个表

优惠券表

  • id (int)
  • Name (nvarchar(max))
  • NoofUses (int)

优惠券使用表

  • id(int)
  • Couponid(int)
  • CreateDate(datetime)

每当用户单击优惠券时,都会在CouponUse表中输入包含该优惠券ID的条目

现在,coupon表中有一列称为NoofUses。我想在存储过程中编写一个游标,该存储过程遍历couponuse表并查看一张优惠券有多少行,并将该数字填入NoofUses优惠券的字段中。

我有这个查询

  select COUNT(*) as totalcount,Name as name from Coupon as coupon 
  join CouponUse as couponuse on coupon.id = couponuse.couponid
  group by couponuse.couponid,coupon.Name

这给了我优惠券的名称及其数量 couponuse

但是我不知道如何使用游标在存储过程中实现它?

您对问题的任何询问将不胜感激,谢谢