Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Обновляемый курсор  [new]
PavelT100
Member

Откуда: Москва
Сообщений: 219
Хочу создать обновляемый курсор, пишу

declare CCUR2 cursor for
select codcip, codcip2, number from @tmp1 order by codcip, codcip2
for update of number
Open CCUR2
while (0=0)
begin
fetch next from CCUR2 into @cip1, @cip2, @count
if(@@FETCH_STATUS <> 0) break
exec sp_GetCountCommon @cip1, @cip2, @count output

update @tmp1 set number = @count where current of CCUR2
end
close CCUR2
deallocate CCUR2

мне говорят:
Server: Msg 16957, Level 16, State 4, Procedure sp_GetMaxNumber, Line 28
FOR UPDATE cannot be specified on a READ ONLY cursor.

Курсор for read only работает успешно.
В чем у меня дело ?
20 янв 03, 15:28    [110073]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый курсор  [new]
AISOFT
Guest
А что такое @tmpl
20 янв 03, 16:34    [110158]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый курсор  [new]
PavelT100
Member

Откуда: Москва
Сообщений: 219

declare @tmp table(codcip int not null)
declare @tmp1 table(codcip int not null, codcip2 int not null, number int not null)

delete from @tmp
insert into @tmp select f.codcip from formes f, composit c where f.refmon=c.refmon and c.codgen = @codgen
insert into @tmp select distinct nid from z_cip_ni where cip in (select codcip from @tmp)

declare @nCip int
select @nCip = count(*) from @tmp

delete from @tmp1
insert into @tmp1 select t1.codcip, t2.codcip, 0 from @tmp t1, @tmp t2 where t1.codcip<>t2.codcip

delete t1 from @tmp1 t1
inner join @tmp1 t2 on t2.codcip = t1.codcip2 and t2.codcip2 = t1.codcip and t2.codcip < t1.codcip
20 янв 03, 16:42    [110180]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый курсор  [new]
a1ex
Member

Откуда: .ua
Сообщений: 369
честно говоря, сейчас срубят инет, так что совет без проверки, сори :))

declare CCUR2 cursor local fast_forward read_only for ...
20 янв 03, 18:47    [110412]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый курсор  [new]
Glory
Member

Откуда:
Сообщений: 104760
Попробуйте объявить таблицы с явным заданием первичного ключа
20 янв 03, 18:50    [110419]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый курсор  [new]
PavelT100
Member

Откуда: Москва
Сообщений: 219
Попробуйте объявить таблицы с явным заданием первичного ключа
А как это сделать ? Таблица у меня временная.
21 янв 03, 12:37    [110934]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый курсор  [new]
snake
Member

Откуда: Russia, Penza
Сообщений: 2290
mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\tsqlref.chm::/ts_ta-tz_7ysl.htm
21 янв 03, 12:46    [110955]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Обновляемый курсор  [new]
Голубев Иван
Member

Откуда: Звенигород
Сообщений: 20
Glory, Всё верно. Помогло назначение первичного ключа. Можете объяснить каким боком он влияет на обновление в курсоре ?
31 май 16, 17:51    [19242548]     Ответить | Цитировать Сообщить модератору
 Re: Обновляемый курсор  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Голубев Иван,

Вы почитайте теорию, что такое ключ. Сразу вопрос отпадёт.
31 май 16, 18:34    [19242677]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить