为什么用了dynamic游标还是只读

declareMycursorCursorscrolldynamic--scroll表示可随意移动游标指针(否则只能向前),dynamic表示可以读写游标(否则游标只读)... declare Mycursor Cursor scroll dynamic
--scroll表示可随意移动游标指针(否则只能向前),dynamic表示可以读写游标(否则游标只读)
for
select * from ClassInfo order by ClassId

--使用open语句打开游标
open Mycursor

--使用fetch语句,从游标中检索行
fetch next from Mycursor
/*该句从结果集中检索下一行记录。当首次执行fetch next 语句时检索的是第一条记录。
所以返回的行记录讲师结果集中的第一行。
如果再次执行该fetch next from Mycursor,则返回当前记录的下一行。*/

UPDATE [ClassInfo]
SET [ClassName] = '十班'
WHERE current of Mycursor
展开
 我来答
wlfd1234
2010-11-24 · TA获得超过1075个赞
知道小有建树答主
回答量:618
采纳率:0%
帮助的人:515万
展开全部
呵呵,跑这问来了
还是让哥给你回答吧:
declare Mycursor Cursor scroll dynamic
for
select * from ClassInfo order by ClassId
for update
--就是在最后加上一个声明,让游标可以更改数据
---------------------------------------------

DYNAMIC
定义一个游标,以反映在滚动游标时对结果集内的各行所做的所有数据更改。行的数据值、顺序和成员身份在每次提取时都会更改。动态游标不支持 ABSOLUTE 提取选项。

UPDATE [OF column_name [,...n]]
定义游标中可更新的列。如果指定了 OF column_name [,...n],则只允许修改列出的列。如果指定了 UPDATE,但未指定列的列表,则可以更新所有列。
-------------------看清楚这俩关键字的区别。

如果使用 Transact-SQL 语法的 DECLARE CURSOR 不指定 READ_ONLY、OPTIMISTIC 或 SCROLL_LOCKS,则默认值如下:

* 如果 SELECT 语句不支持更新(由于权限不够、访问的远程表不支持更新等等),则游标为 READ_ONLY。

* STATIC 和 FAST_FORWARD 游标默认为 READ_ONLY。

* DYNAMIC 和 KEYSET 游标默认为 OPTIMISTIC。(乐观的?最佳化,这个单词的意思挺搞笑)

-------------最后追加一个,可看可不看:

如果在 CURSOR 关键字的前面指定 SCROLL 或 INSENSITIVE 关键字,则不能在 CURSOR 和 FOR select_statement 关键字之间使用任何关键字。如果在 CURSOR 和 FOR select_statement 关键字之间指定任何关键字,则不能在 CURSOR 关键字的前面指定 SCROLL 或 INSENSITIVE。

P.S:累死了,不但要手打,这就算了,我忍;竟然还要“复制-粘贴”——还让不让人活了,手抽筋了,画个圈圈祝福你去
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式