对sqlserver存储过程合游标的一些理解

  在最近老板给我的数据库操作要求中,有一张类似购物清单样式的表,表中有客户ID,商品ID,商品数量,单价和商品总价,出售日期。还有一张商品折扣信息表,在这基础上商品价格同一商品价格会有差异,不同客户最高折扣额不同,折扣率也有差异,要求用sqlserver存储过程合游标表诉

   一开始根本没有思路和头绪,听老大讲解是要用存储过程将查询到的数据存储好,再用游标循环遍历。对于存储过程合游标的表诉一直不太熟,之前只是将用sql语句查到的结果集放到存储过程里面,对于游标的了解不够深入。所以一开始也是想着用sql语句直接将查到的结果在游标中循环添加,后来发现很难实施。新表中客户ID、商品ID是不变的,后面的字段值是一直变化的,而且还和其他表关联。

解决办法是将两表通过外键关联关系联系起来,定义变量去接收查出来的数据,在游标中通过循环添加。但在游标实施过程中遇到一个问题想不明白,同一客户每次购买的商品数量和单价都不相同,而且每次都要进行折扣计算。这就需要对每个游标进行操作,但是怎样判断下一游标和上一游标的不同,这里我用到了IF条件判断,通过对每一条游标给他赋予一个变量值,让他的变量值等于我得到的客户ID,比较每一次ID的不同。变量设置的比较多,对于每一个有操作变化的值基本上都去设置了一个变量来接受,对于插入和更新的操作也是通过这个ID变量来进行判断。但感觉这样操作显得过于复杂,循环中IF条件判断也显得比较多,是否还有更好的方式去操作呢?在下一节我会说一个自己的想法,当然下一节会把一些查到的相关资料写上

原文地址:https://www.cnblogs.com/SH03/p/5170245.html