sql游标遍历_sqlserver游标的使用

sql游标遍历_sqlserver游标的使用T_SQL编程中使用游标循环结果循环多次的问题在做一个数据库实训题目的时候碰到了这个问题,首先来看一下题目依次读出 student 表中的数据,判断是否为男生,如果是,就在 sc 表中将其 所有的选课成绩上浮 10%题目这是Student表Student表这是SC表SC表首先这

T_SQL编程中使用游标循环结果循环多次的问题   在做一个数据库实训题目的时候碰到了这个问题,首先来看一下题目   依次读出 student 表中的数据,判断是否为男生,如果是,就在 sc 表中将其 所有的选课成绩上浮 10%   
sql游标遍历_sqlserver游标的使用题目   这是Student表
sql游标遍历_sqlserver游标的使用Student表   这是SC表   
sql游标遍历_sqlserver游标的使用SC表   首先这个用简单的sql语句很好作答
sql游标遍历_sqlserver游标的使用   直接嵌套就ok了,看SC表成功修改
sql游标遍历_sqlserver游标的使用   但是有点不符合题意,题目说是依次读出 student 表中的数据,判断是否为男生,这里没有实现依次和判断,老师目的是让我们做Tsql编程来做,所以换了一种思路,使用游标来做       先把SC表还原
sql游标遍历_sqlserver游标的使用   看一下游标的用法
sql游标遍历_sqlserver游标的使用   这个网上的示例是游标指向sk_tabl_name表里的djno,   打开游标,循环查询,查询道德djno存入@djno变量,   然后更新 tab_yb表的netsum+1然后指向表的下一行的djno   OK,仿写一下
sql游标遍历_sqlserver游标的使用   看着没有任何问题,根据题目要求多加了一个判读,当@sex是男的时候,才执行Grade=Grade*1.1   ok执行一下   看下结果
sql游标遍历_sqlserver游标的使用   ?????   怎么是122   122/92=1.326………   怎么会是这样呢,怎么不是1.1倍??   中间想了半天,找了半天的资料,什么sql的小数运算问题什么的,都不对   好了,直接看问题的原因吧   看一下执行的信息
sql游标遍历_sqlserver游标的使用   这是信息,注意看这里的Affected rows这里显示了三次,一次改了三行   ?我们来计算一下92*1.1*1.1*1.1=122.452,正好是122,好吧,为什么会乘了三次呢   看下代码
sql游标遍历_sqlserver游标的使用   主要的逻辑在这里   直接说错误的原因吧   这里的UPDATE语句下面的where直接匹配到所有的Sno,这里就会执行三次update执行一次就会显示Affected rows 3,影响了三行,而且外面套了while,while中的if也执行三次就会出现三次Affected rows 3,所以男生的成绩上浮了3次110%   问题找到了,怎么修改呢,有人说用‘IN‘换成‘=’不就好了吗,显然是不行的,因为子查询有多个结果,不能用‘=’,   现在的目的就是让Where的地方一次取一个性别,而且下一次不要取已经取过的一行,要指向下一行,ok,说到指向,只能用游标了,再加一个游标?   试一下
sql游标遍历_sqlserver游标的使用   试着用两个游标来做   分别在Student中找到Sno,Ssex给变量@sex,@sno   Where条件写sno=@sno   修改之后,指向下一行的sex,sno   执行一下
sql游标遍历_sqlserver游标的使用   While里的IF执行了三次,因为是三个男生   但是只有第一次执行了修改   因为只有第一个男生的学号在sc表里面有   后面两个男生,在sc里面不存在,不执行修改   结果就是我们想要的
sql游标遍历_sqlserver游标的使用       OK,答案正确,结束

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/61582.html

(0)
上一篇 2024年 8月 29日 上午8:02
下一篇 2024年 8月 29日 上午8:06

相关推荐

关注微信