更新游标当前的数据,始终提示出错。_MSSQL_编程问答 问题: 更新游标当前的数据,始终提示出错。

解决方案1:

sqlserver 临时表 变量表那么好用的何必用游标。

解决方案2:

你的代码没问题,可能哪里有无效字符,如中文空格之类的,另外如果单实现你要的效果,不需要用光标,你先这么处理根本就是高级语言的思路,不算数据库思路
你只要用一条语句就行了


UPDATE score set sscore=60.0 WHERE sscore<60

解决方案3:

我这样测试着也可以,你试试

--测试数据
if not object_id(N'Tempdb..#T') is null
    drop table #T
Go
Create table #T([sid] int,[sscore] int)
Insert #T
select 1,80 union all
select 2,60 union all
select 3,50
Go
--测试数据结束
DECLARE my_cursor CURSOR
FOR
    SELECT  *
    FROM    #T FOR UPDATE
DECLARE @id NCHAR(10)
DECLARE @score FLOAT
OPEN my_cursor
FETCH NEXT FROM my_cursor INTO @id, @score
WHILE @@FETCH_STATUS = 0
    BEGIN
        IF ( @score < 60 )
            UPDATE  #T
            SET     sscore = 60.0
            WHERE CURRENT OF my_cursor
        FETCH NEXT FROM my_cursor INTO @id, @score
    END
close my_cursor
deallocate my_cursor
SELECT * FROM #T

 更新游标当前的数据,始终提示出错。

解决方案4:

检查了没语法错误,估计是你自己那里出问题了
这个需求一句update 就可以搞定,没必要用游标的
UPDATE score set sscore=60.0 where score < 60

解决方案5:

游标一定比自己用临时表或表变量的实现效率低?????

解决方案6:

不用游标,效率太低,试试这样

--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([sid] int,[sscore] int)
Insert #T
select 1,80 union all
select 2,60 union all
select 3,50
Go
--测试数据结束
UPDATE #T SET sscore=60 WHERE sscore<60
SELECT * FROM #T

 更新游标当前的数据,始终提示出错。

上一篇再问一个复杂的SQL问题,谢谢大家!
下一篇用存储过程建一个报表(sql server的),刚入行的新手,麻烦大神帮帮忙做一下
明星图片
相关文章
《 更新游标当前的数据,始终提示出错。》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)