![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
singleton-набор данных [D6, IB6.x, Firebird 1.0.3]
zorik © (2004-07-15 09:33:00)Есть таблица с полем дата и другими информативными полями. Пользователь задает дату и если запись с такой датой есть в таблице - процедура должна вернуть одну запись именно с этой датой, если нет - предыдущюю запись.
Вопрос. Вернет ли такая конструкция именно то что нужно. Когда проходит сортировка в теле for select - doили после всего перебора?
FOR
SELECT date1, a1
FROM D01
WHERE date1<=:userdate
order by date1 desc
INTO :date1, :a1
DO
BEGIN
SUSPEND;
EXIT;
END
zorik (2004-07-15 10:04:00) [1]Спасибо!
Johnmen (2004-07-15 10:00:00) [2]Правильно.
zorik (2004-07-15 09:58:00) [3]Спасибо! А то что я написал правильно работает? Сначала отсортируется а потом вылетит по EXIT или может выйти раньше из процедуры?
Johnmen (2004-07-15 09:49:00) [4]FOR - это оператор цикла
после DO - оператор тела цикла, в т.ч. и бегин-блок
То, что ты хочешь, можно просто запросом
SELECT *
FROM D01 T1
WHERE T1.date1=(SELECT MAX(T2.date1)
FROM D01 T2
WHERE T2.date1<=:userdate)