почему курсор READ ONLY

DImanch
Дата: 11.12.2002 11:24:26
Объявляю в процедуре курсор

...
declare cur_profit cursor for
select sum_profit from #tmp_profit
where sum_profit > 0.0 order by sum_profit desc
for update of group_pareto
...

процедура нормально сохраняется, но при выполнении выдается сообщение

Server: Msg 16929, Level 16, State 4, Procedure ALX_CALC_PROFIT, Line 36
The cursor is READ ONLY.

пробовал выставлять OPTIMISTIC - то же самое. Ругается именно на место объявления курсора. В чем дело?
ziktuw
Дата: 11.12.2002 12:13:42
Первичный ключ в табличке имеется?
DImanch
Дата: 11.12.2002 12:30:15
неа, не имеется. Это временная таблица, создаваемая путем select ... into
ziktuw
Дата: 11.12.2002 12:45:12
А ты сам подумай - может быть что-нибудь обновляемое по табличке без первичного ключа?
DImanch
Дата: 11.12.2002 14:59:15
Интересно, что если убрать order by, то ошибка пропадает, но... нужен отсортированный набор. В чем же все-таки дело?
DImanch
Дата: 11.12.2002 15:52:00
Действительно, создав табличку вручную и добавив туда суррогатный первичный ключ, я наконец смог создать обновляемый курсор для упорядоченного набора. Но, на самом деле, неочевидно, почему при использовании 'order by' первичный ключ нужен, а если вышеуказанную конструкцию не применять - нет. В BOL это никак не освещено
AAron
Дата: 11.12.2002 17:34:58
здесь получилась интересная ситуация :)
для какой цели создана таблица, не содержащая первичный ключ? были ли в таблице уникальные индексы?