Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как избежать курсора? помогите люди добрые! / 14 сообщений из 14, страница 1 из 1
03.09.2002, 16:52:29
    #32047847
vika
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать курсора? помогите люди добрые!
Не люблю я курсоры. Просто не люблю. Может кто подскажет как можно избежать курсора если нужно сделать так:

DECLARE @NO AS INT, @i AS INT

SET @i=0
DECLARE UPTD CURSOR
FOR select NO from tb
OPEN UPTD
FETCH NEXT FROM UPTD INTO @JNO
while @@FETCH_STATUS <> -1
BEGIN
UPDATE tb SET NO=@i+1
SET @i=@i+1
FETCH NEXT FROM UPTD INTO @NO
END
CLOSE UPTD
DEALLOCATE UPTD
...
Рейтинг: 0 / 0
03.09.2002, 16:58:16
    #32047849
Jimmy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать курсора? помогите люди добрые!
Если я не стормозил, то Ваш код делает именно это:

Код: plaintext
1.
2.
3.
declare @сount int
select @count = count(*) from tb
update tb set no = @count +  1 
...
Рейтинг: 0 / 0
03.09.2002, 16:58:25
    #32047850
dkstranger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать курсора? помогите люди добрые!
Самое простое так

DECLARE @NO AS INT, @i AS INT

SET @i=0
while @i<@no begin
select @i=@i+1
end
...
Рейтинг: 0 / 0
03.09.2002, 17:01:10
    #32047853
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать курсора? помогите люди добрые!
Да уж, странный код.
Словами объясните что нужно то.
...
Рейтинг: 0 / 0
03.09.2002, 17:03:03
    #32047855
Maxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать курсора? помогите люди добрые!
Сегодня что 1 Апреля
...
Рейтинг: 0 / 0
03.09.2002, 17:19:26
    #32047860
Александр Степанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать курсора? помогите люди добрые!
Может, что-то вроде этого?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
create table tb
(
	pk int not null,
	[NO] int
)

insert into tb(pk) values( 1 )
insert into tb(pk) values( 7 )
insert into tb(pk) values( 4 )
insert into tb(pk) values( 6 )
insert into tb(pk) values( 3 )
insert into tb(pk) values( 2 )
insert into tb(pk) values( 5 )

GO

DECLARE @NO int
Set @NO=- 1 

UpDate tb
Set @NO=NO=@NO+ 1 

Select * from tb


Вопрос нумерации строк обсуждался на форуме не раз. Воспользуйтесь поиском, чтобы найти все предложенные варианты.

С уважением,
Александр Степанов
...
Рейтинг: 0 / 0
03.09.2002, 18:01:19
    #32047870
vika
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать курсора? помогите люди добрые!
Если словами то так:
имеем таблицу и надо один из столбцов в ней пронумеровать основываясь на значениях другого столбца при этом необходимо учитывать порядок сортировки оного
т.е.
col1 col2 col3
4 qqq 2456
1 mmm 1455
4 yyy 2456
...
Рейтинг: 0 / 0
04.09.2002, 11:16:37
    #32047973
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать курсора? помогите люди добрые!
имеем таблицу и надо один из столбцов в ней пронумеровать основываясь на значениях другого столбца при этом необходимо учитывать порядок сортировки оного


Тогда вариант Степанова не подходит. Я бы сделал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
create table #counter (count int identety( 1 ,  1 ), col3 int)
insert into #Counter (col3)
select col3 from YourTable group by col3
update yt set yt.col1 = c.count from YourTable yt
inner join #Counter c on yt.col3 = c.Col3
drop table #Counter


Если сервер 2000-й можно вместо временной таблицы использовать переменную типа table.
...
Рейтинг: 0 / 0
04.09.2002, 11:19:04
    #32047977
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать курсора? помогите люди добрые!
Сорри, пропустил order by col3 при вставке во временную таблицу.
...
Рейтинг: 0 / 0
04.09.2002, 12:55:19
    #32048021
Александр Степанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать курсора? помогите люди добрые!
To Genady

В первоначальной постановке задачи (т.е. скрипте) никакими order by и не пахло :-)))

Если нужен именно order by, то IMHO вариант с временной таблицей мне нравится больше остальных. Тем не менее настоятельно рекомендую Вике воспользоваться поиском и посмотреть на все предложенные варианты.
...
Рейтинг: 0 / 0
04.09.2002, 13:23:29
    #32048035
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать курсора? помогите люди добрые!
В первоначальной постановке задачи (т.е. скрипте) никакими order by и не пахло :-)))

А в скрипте и нумерацией не пахло, то что делает скрипт Jimmy в трех строках изобразил. :)
...
Рейтинг: 0 / 0
04.09.2002, 13:50:29
    #32048048
Александр Степанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать курсора? помогите люди добрые!
To Genady

Правда ваша! Каюсь, невнимательно посмотрел, с кем не бывает! ;-)
...
Рейтинг: 0 / 0
04.09.2002, 13:56:48
    #32048055
MichaelGK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать курсора? помогите люди добрые!
Не удивлюсь если здесь появится постинг:
" Ну что, SQL - эротоманы, здорово я вас зацепила на слабости к женскому полу, такую белеберду заставила на полном серьезе решать"
GreenSunrise
...
Рейтинг: 0 / 0
04.09.2002, 16:23:49
    #32048146
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать курсора? помогите люди добрые!
Дико извиняюсь за влезание в беседу, MichaelGK, у меня к вам вопрос - а я-то тут при чем? Не припомню за собой привычки плодить идиотские топики. Может, покажете? Я вообще редко здесь что-либо спрашиваю.

P.S. Под другими никами не захожу, поверьте на слово.

P.P.S. Съем мышиный коврик, если найдете хоть один мой топик, где была попытка сыграть на жалости к женскому полу.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как избежать курсора? помогите люди добрые! / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]