Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Операторы языка... / 3 сообщений из 3, страница 1 из 1
01.10.2002, 15:39:29
    #32054489
Alex_VB
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Операторы языка...
Я так понял, что в MSSQL можно использовать некоторые типичные операторы, имеющиеся в других языках программирования, например мне нужно организовать цикл. На VB это было бы так:
D1, D2, D - даты
rs1, rs2 - рекордсеты, точнее таблицы

D1 = "01.01.2003"
D2 = "31.12.2003"

rs1.MoveFirst
While Not rs1.EOF

D = rs1.[Date_repair]
While D <= D2
If D >= D1 Then
rs2.AddNew
rs2.ID_Eq = rs1.[ID]
rs2.[Дата] = D
rs2.[Тип] = "С"
rs2.Update
End If
D = DateAdd("d", rs1.[Средний] / 8 / rs1.[Cмены], D)
Wend
можно ли организовать подобный цикл в MSSQL,
если использовать rs1 как SELECT * FROM Оборудование,
а rs2 как SELECT * FROM Ремонты?
...
Рейтинг: 0 / 0
01.10.2002, 15:43:30
    #32054493
dao
dao
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Операторы языка...
В лоб - через курсоры
...
Рейтинг: 0 / 0
02.10.2002, 00:20:01
    #32054639
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Операторы языка...
При решении какой-то задачи Вашим первым вопросом должен быть: "А как это сделать одним запросом?"
Судя по листингу Ваша задача решается так.

insert into rs2 (rs2.ID_Eq,rs2.[Дата],rs2.[Тип])
select rs1.[ID],rs1.[Date_repair],"С"
from rs1
where D between @D1 and @D2
И выкиньте из головы прежние подходы к обработке таблиц последовательным доступом к строкам
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Операторы языка... / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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