FirebirdSQL logo
 COMMENTSОператоры процедурного SQL (PSQL) 

Особенности при использовании ROWS с двумя аргументами

  • Если m больше общего количества строк в наборе данных и n >= m, то будет возвращён пустой набор данных;

  • Если число m не превышает общего количества строк в наборе данных, а n превышает, то выборка ограничивается строками, начиная с m до конца набора данных;

  • Если m < 1 и n < 1, то оператор SELECT выдаст ошибку;

  • Если n = m -1, то будет возвращён пустой набор данных;

  • Если n < m -1, то оператор SELECT выдаст ошибку.

Замена FIRST …​ SKIP

В сущности, ROWS заменяет собой нестандартные выражения FIRST и SKIP, за исключением единственного случая, когда указывается только SKIP, т.е.когда возвращается весь набор данных за исключением пропуска указанного числа записей с начала.

Для того, что реализовать такое поведение с помощью ROWS, необходимо указать второй аргумент, заведомо больший, чем размер возвращаемого набора данных.Или запросить число записей в возвращаемом наборе через подзапрос.

Совместное использование FIRST …​ SKIP и ROWS

Нельзя использовать ROWS вместе с FIRST/SKIP в одном и том же операторе SELECT, но можно использовать разный синтаксис в разных подзапросах.

Использование ROWS в UNION

При использовании ROWS с выражением UNION, он будет применяться к объединённому набору данных, и должен быть помещён после последнего SELECT.

При необходимости ограничить возвращаемые наборы данных одного или нескольких операторов SELECT внутри UNION, можно воспользоваться следующими вариантами:

  1. Использовать FIRST/SKIP в этих операторах SELECT. Необходимо помнить, что нельзя локально использовать выражение ORDER BY в SELECT внутри UNION – только глобально, ко всему суммарному набору данных;

  2. Преобразовать SELECT в производные таблицы с выражениями ROWS.