各位大哥,我有一个关于cursor的问题,想要请教,谢谢了,在线等待

salt3000 2003-08-19 03:43:47
我的cursor的声明语句如下:
declare ht_curs cursor for select changjiafeiyong,changjiazhekou,jisuanleixing,zhi,shuliangs,danjia,danjia_kd from #t1 order by hetongbianhao,bianhao for update

可是为什么系统报错说:The cursor is READ ONLY
报错行数是指向declare cursor 那句话的
为什么啊!!!我写了for update 的呀
...全文
26 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
salt3000 2003-08-19
  • 打赏
  • 举报
回复
结贴喽
salt3000 2003-08-19
  • 打赏
  • 举报
回复
order by 对,就是order by 的问题,谢谢,老大,谢谢
hjb111 2003-08-19
  • 打赏
  • 举报
回复
declare ht_curs cursor for select changjiafeiyong,changjiazhekou,jisuanleixing,zhi,shuliangs,danjia,danjia_kd from #t1 order by hetongbianhao,bianhao for read only
zjcxc 元老 2003-08-19
  • 打赏
  • 举报
回复
问题应该出在order by 上,有order by 的情况是不支持更新的.

你试试
declare ht_curs cursor for select changjiafeiyong,changjiazhekou,jisuanleixing,zhi,shuliangs,danjia,danjia_kd from #t1 for update
txlicenhe 2003-08-19
  • 打赏
  • 举报
回复
-- =============================================
-- Declare and using an UPDATE cursor
-- =============================================
DECLARE <@variable_1, sysname, @v1> <datatype_for_variable_1, sysname, varchar(20)>,
<@variable_2, sysname, @v2> <datatype_for_variable_2, sysname, varchar(40)>

DECLARE <cursor_name, sysname, test_cursor> CURSOR
FOR SELECT <column_1, sysname, au_fname>, <column_2, sysname, au_lname> FROM <table_name, sysname, pubs.dbo.authors>
FOR UPDATE of <column_1, sysname, au_fname>

DECLARE @count smallint
SELECT @count = 1

OPEN <cursor_name, sysname, test_cursor>
FETCH NEXT FROM <cursor_name, sysname, test_cursor> INTO <@variable_1, sysname, @v1>, <@variable_2, sysname, @v2>

WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
-- PRINT 'add user-defined code here...'
-- eg
PRINT 'updating record of ' + @v1 + ' ' + @v2
UPDATE pubs.dbo.authors
SET au_fname = @v1 + '-' + CAST(@count AS varchar(4))
WHERE au_lname = @v2
END
FETCH NEXT FROM <cursor_name, sysname, test_cursor> INTO <@variable_1, sysname, @v1>, <@variable_2, sysname, @v2>
SELECT @count = @count + 1
END

CLOSE <cursor_name, sysname, test_cursor>
DEALLOCATE <cursor_name, sysname, test_cursor>
GO

txlicenhe 2003-08-19
  • 打赏
  • 举报
回复
最好有全部代码。

try:
declare ht_curs cursor for select changjiafeiyong,changjiazhekou,jisuanleixing,zhi,shuliangs,danjia,danjia_kd from #t1 order by hetongbianhao,bianhao for update of changjiafeiyong
CrazyFor 2003-08-19
  • 打赏
  • 举报
回复
declare ht_curs cursor for select changjiafeiyong,changjiazhekou,jisuanleixing,zhi,shuliangs,danjia,danjia_kd from #t1 order by hetongbianhao,bianhao for update 字段1,字段2,字段3....

把要更新的字段跟在后面,如上.
CrazyFor 2003-08-19
  • 打赏
  • 举报
回复
declare ht_curs cursor for select changjiafeiyong,changjiazhekou,jisuanleixing,zhi,shuliangs,danjia,danjia_kd from #t1 order by hetongbianhao,bianhao for update 字段1,字段2,字段3....

把要更新的字段跟在后面,如上.

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧