|
|
|
Junior Member
      
участник
Last Login: 09.04.2001 12:04
Сообщ.: 15,
Visits: 166
|
|
Кто знает как удалить из текущую таблицы запись
которые просматриваю с помощью курсора .
напрнимер
CREATE PROCEDURE shintorg_del_eq AS
DECLARE MyCursor SCROLL
CURSOR FOR SELECT * FROM shintorg_tn_cat ORDER BY n_id_cat FOR UPDATE
DECLARE @a1 int,@a int,@b int,@b1 int
OPEN MyCursor
FETCH NEXT FROM MyCursor INTO @a,@b
WHILE @@FETCH_STATUS=0
BEGIN
FETCH NEXT FROM MyCursor INTO @a1,@b1
IF @a=@a1 and @b=@b1
begin
DELETE FROM shintorg_tn_cat WHERE CURRENT OF MyCursor
end
else FETCH NEXT FROM MyCursor INTO @a,@b
END
CLOSE MyCursor
DEALLOCATE MyCursor
а сервер ругается
Msg 16929, Level 16, State 1
Cursor is read only
|
|
|
|
|
Supreme Being
      
участник
Last Login: 03.03.2006 19:03
Сообщ.: 1 908,
Visits: 21 011
|
|
Особо с курсорами не работал, но подозреваю, что если запустить Books online и ввести в строку поиска "cursor is read only", то почти наверняка можно будет разрешить проблему.
Это определение Declare cursor: (T-SQL)
DECLARE cursor_name CURSOR
[LOCAL | GLOBAL]
[FORWARD_ONLY | SCROLL]
[STATIC | KEYSET | DYNAMIC | FAST_FORWARD]
[READ_ONLY | SCROLL_LOCKS | OPTIMISTIC]
[TYPE_WARNING]
FOR select_statement
[FOR UPDATE [OF column_name [,...n]]]
Может быть всякие флаги поменять/указать нужно.
|
|
|
|
|
Junior Member
      
участник
Last Login: 09.04.2001 12:04
Сообщ.: 15,
Visits: 166
|
|
Спасбо я разобрался !
Просто чтобы удалить запись из таблицы в ней должно быть уникальное поле ... а без него
курсор определяется не как SCROLL а INSENSITIVE
и он соответсвенно открыт только для чтения
:)
|
|
|
|