日期:2014-05-18  浏览次数:20402 次

用游标删除数据的问题
可以用游标来删除表中所有数据么?想插入一行删除一行,可以么

------解决方案--------------------
是从A表往B里插入数据,然后把B里的这条数据删除
---
不是白玩了么。。
------解决方案--------------------
呵呵
------解决方案--------------------
可以用游标来删除表中所有数据么?想插入一行删除一行,可以么
是从A表往B里插入数据,然后把B里的这条数据删除

------------------------

当然可以:

declare 游标 cursor for select ??? from A
open 游标
fetch next from 游标 into ???
while @@fetch_status=0
begin
insert into B values(???)
delete from A where current of 游标 --删除当前行
fetch next from 游标 into ???
end
close 游标
deallocate 游标
------解决方案--------------------
SCROLL_LOCKS

指定确保通过游标完成的定位更新或定位删除可以成功。当将行读入游标以确保它们可用于以后的修改时,Microsoft SQL Server 会锁定这些行。如果还指定了 FAST_FORWARD,则不能指定 SCROLL_LOCKS。

OPTIMISTIC

指定如果行自从被读入游标以来已得到更新,则通过游标进行的定位更新或定位删除不成功。当将行读入游标时 SQL Server 不锁定行。相反,SQL Server 使用 timestamp 列值的比较,或者如果表没有 timestamp 列则使用校验值,以确定将行读入游标后是否已修改该行。如果已修改该行,尝试进行的定位更新或定位删除将失败。如果还指定了 FAST_FORWARD,则不能指定 OPTIMISTIC。
------解决方案--------------------
是不是声明了只读游标,不要定要 READ_ONLY 关键字,象 ORDER BY 之类的都有可能导致游标只读。
------解决方案--------------------
还在想,怎么刚插到B里就删掉了呢 !
学习

------解决方案--------------------
把A中的一条数据保存到B,然后删除A中的这条数据
题目是这个意思吧