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

Откуда:
Сообщений: 1066
declare @t table (id int identity(1,1), id_g int, p_id int)
declare @id int,
		@id_g int
insert into @t(id_g,p_id)
select 1, -1

declare crs cursor for 
select id,id_g from @t
open crs
fetch next from crs INTO @id,@id_g
while @@FETCH_STATUS = 0
begin

	insert into @t(id_g,p_id)
	SELECT 1,@id
	
fetch next from crs into @id,@id_g
end
close crs
deallocate crs


у кого то еще зависает??? или это уже что то у меня в голове...))

и вообще странно убираю insert into @t(id_g,p_id), 1 запись возвращается,
5 мар 12, 17:33    [12198378]     Ответить | Цитировать Сообщить модератору
 Re: Курсор зависает....  [new]
iap
Member

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

курсор-то у Вас динамический.
А Вы в него последнюю запись всё добавляете и добавляете
5 мар 12, 17:36    [12198399]     Ответить | Цитировать Сообщить модератору
 Re: Курсор зависает....  [new]
Glory
Member

Откуда:
Сообщений: 104751
marvel
у кого то еще зависает??? или это уже что то у меня в голове...))

Т.е. добавляем запись в таблицу - читаем ее, добавляем - читаем, ... ?
5 мар 12, 17:37    [12198409]     Ответить | Цитировать Сообщить модератору
 Re: Курсор зависает....  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Вот так работает?
marvel
declare @t table (id int identity(1,1), id_g int, p_id int)
declare @id int,
		@id_g int
insert into @t(id_g,p_id)
select 1, -1

declare crs cursor local fast_forward for 
select id,id_g from @t
open crs
fetch next from crs INTO @id,@id_g
while @@FETCH_STATUS = 0
begin

	insert into @t(id_g,p_id)
	SELECT 1,@id
	
fetch next from crs into @id,@id_g
end
close crs
deallocate crs
5 мар 12, 17:37    [12198410]     Ответить | Цитировать Сообщить модератору
 Re: Курсор зависает....  [new]
Tohins
Member

Откуда:
Сообщений: 63
iap,

тут нет разницы, fast_forward не поможет, он все равно перед следующим считываением добавляет новую запись, он так и не дойдет до конца :)
6 мар 12, 08:41    [12200611]     Ответить | Цитировать Сообщить модератору
 Re: Курсор зависает....  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
А что объявление курсора как STATIC уже не помогает?
BOL
STATIC
Определяет курсор, который создает временную копию данных для использования курсором. Все запросы к курсору обращаются к указанной временной таблице в базе данных tempdb, поэтому изменения базовых таблиц не влияют на данные, возвращаемые выборками для данного курсора, а сам курсор не позволяет производить изменения.

6 мар 12, 08:46    [12200617]     Ответить | Цитировать Сообщить модератору
 Re: Курсор зависает....  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Tohins
iap,

тут нет разницы, fast_forward не поможет, он все равно перед следующим считываением добавляет новую запись, он так и не дойдет до конца :)
Да. Думал STATIC, а написал по привычке FAST_FORWARD
6 мар 12, 09:31    [12200739]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить