游标问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 12:18:10
declare @Sex nvarchar(10)
declare @Sexs nvarchar(10)
declare pcurr cursor for
select Sex from Person
open pcurr
while @@fetch_status = 0
fetch next from pcurr into @Sex
if (@Sex = '1')
set @Sexs = '女'
else
set @Sexs = '男'
begin
update Person set Sex = @Sexs
end
close pcurr
deallocate pcurr

帮我看看哪有问题?为什么修改的都是男

你这个流程肯定有问题,
update Person set Sex = @Sexs
这句语句没有指定是哪条记录,所以把整个表person的所有记录都更新了。
所以你得指定更新哪条记录,读取数据是不能光把性别读出来,而且要记录的主健读出来,定义游标时,得把主健也定义进去,如:declare pcurr cursor for
select 主健,Sex from Person
fetch next from pcurr into @主健,@Sex
然后更新时就可以根据这个主健来更新你想要的记录。
update Person set Sex = @Sexs where 主健=@主健
流程应该是这样的才行啊。
不过我把sex=1的改成男何必用到游标,只需要一个SQL语句就完事了,
update person set sex='男' where sex='1'
update person set sex='女' where sex<>'1' or sex is null

update语句少条件

update Person set Sex = @Sexs where 主键=值

值从next里面取

5分。。。现在的数据库工程师还真不值钱。。