powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Детский вопросик по MS SQL
5 сообщений из 5, страница 1 из 1
Детский вопросик по MS SQL
    #32045527
mick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите совершенно дикому в MS SQL, как сделать обработку результатов запроса, которую я на InterBase написал бы так:
For select a1, a2, ... from table1 where ...
into :a1, :a2, ... do
begin
/*делаем что-то*/
end
В MS SQL, если я правильно понимаю, необходимо объявить
курсор
declare @a1 ....
DECLARE Cur1 CURSOR FOR SELECT a1, a2, ... from table1
OPEN Cur1
WHILE 1=1
BEGIN
FETCH Cur1 INTO @a1, @a2, ...
IF @@fetch_status=-1
BREAK
IF @@fetch_status=-2
CONTINUE
/*делаем что-то*/
end
Но такое хождение по выборке работает медленно (злая судьба заставляет использовать MS SQL 6.5 :-( ). Подскажите, как делать правильно.
...
Рейтинг: 0 / 0
Детский вопросик по MS SQL
    #32045531
Sanek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL Server ореинтирован на работу с набором строк, а не с конкретной строкой ... так что курсор работает медленно ... ничего не поделаеш ... может имеет смысл попробовать сделать без курсора ?
...
Рейтинг: 0 / 0
Детский вопросик по MS SQL
    #32045532
AlexP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно делается так:

declare c cursor for select ...
open c
fetch c into @var1, @var2, ...
while @@fetch_status = 0 begin
-- обработка
fetch c into @var1, @var2, ...
end
close c
deallocate c

Если данные через курсор изменять не требуется, можно написать

declare c cursor fast_forward for ...
...
Рейтинг: 0 / 0
Детский вопросик по MS SQL
    #32045534
mick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если /*делаем что-то*/ заключается в нескольких Update или Delete?
...
Рейтинг: 0 / 0
Детский вопросик по MS SQL
    #32045553
Sanek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
внутри цикла может быть сколько угодно Update, Insert, Delete, Select и прочего ...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Детский вопросик по MS SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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