我定义了一个游标,不知道怎么搞得,调试的时候,总是说我定义的是一个只读的游标,但是我确实没有定义它是READ ONLY啊!
大家看看,定义有什么问题::DECLARE CursorOne    CURSOR SCROLL
FOR SELECT Num,SimiFROM Table1
ORDER BY  Num
FOR UPDATE OF Simi然后在后面的程序中用:
UPDATE Table1
SET Simi = @VALUE
WHERE CURRENT OF Simi其他的程序都没有问题,问题就是说我定义的游标是一个READ ONLY 不能修改!!
有什么解决办法?????修改方法??给点意见吧!!

解决方案 »

  1.   

    DECLARE CursorOne    CURSOR --SCROLL   --** 去掉 scroll 有这个的也是只读游标
    FOR SELECT Num,Simi
    FROM Table1
    --ORDER BY  Num                        ---** 去掉order by ,有order by的是只读游标
    FOR UPDATE OF Simi
      

  2.   

    --示例--测试数据
    declare @t table(id int,name char(10))
    insert @t select 1,'aa'
    union all select 2,'bb'
    union all select 3,'cc'print '----------------------------------'
    print '------        原表内容     --------'
    select * from @t--用游标删除数据
    declare mycur cursor --scroll
    for 
    select * from @topen mycurprint '----------------------------------'
    print '------    被删除的内容     --------'
    fetch next from mycur
    delete @t where current of mycur
    close mycur
    deallocate mycurprint '----------------------------------'
    print '------    处理后的内容     --------'
    select * from @t/*--测试结果
    ----------------------------------
    ------        原表内容     --------
    id          name       
    ----------- ---------- 
    1           aa        
    2           bb        
    3           cc        (所影响的行数为 3 行)----------------------------------
    ------    被删除的内容     --------
    id          name       
    ----------- ---------- 
    1           aa        (所影响的行数为 1 行)
    ----------------------------------
    ------    处理后的内容     --------
    id          name       
    ----------- ---------- 
    2           bb        
    3           cc        (所影响的行数为 2 行)
    --*/