Не знаю, один ли я такой неуч, но, как оказалось, при вычитке одной строки в DB2'ом запросе можно указывать порядок - точно так же как и в случаем использования DB2 курсора.
Итак, ограничение по количеству записей устанавливается при помощи выражения:
FETCH FIRST 1 ROW ONLY
В данном случае вычитывается только первая строка из результирующего массива.
Для того, чтобы уменьшить время выполнения запроса и не блокировать таблицы можно добавить еще и:
WITH UR
где UR uncommitted read.
А перед указанным выражением можно использовать стандартный ORDER BY для указания порядка вычитки.
Для проформы приведу итоговый SQL запрос:
SELECT * FROM OWNER.TABLE WHERE <CONDITION> ORDER BY <FIELD> <DIRECTION> FETCH FIRST 1 ROW ONLY WITH UR
Обращаю Ваше внимание, что подобный запрос не будет возвращать код -811 в случае, если нашлось несколько записей, попадающих под условие. В этом случае будет возвращен SQL код 0 и первая запись.
Отправить комментарий