Запросы отбираются в скалярные переменные, а именно элементы ассоциативного массива. Как следствие, наборы результатов каждого из этих запросов должны представлять собой одну запись, из которой проецируется один столбец.
rownum
- порядковый номер, назначенный записям в наборе результатов, указывающий порядок, в котором они возвращаются из базы данных. Если n
- размер результирующего набора, записи нумеруются непрерывно с 1..n
.
Предложение rownum <= 1
в условиях where
, таким образом, является обобщенным c средством для уменьшения числа записей в результирующем наборе равным 1. Очевидно, что предложение rownum <= [any number k > 1]
в общем случае создаст k
записей, вызывающих ошибку.
Представленные запросы могут по-прежнему терпеть неудачу, если запросы (без предложения rownum
) даст пустой набор результатов. Вероятно, что бизнес-логика c исключает эту возможность (например, гарантируется [и обеспечивается ограничениями или триггерами], что таблица employee
всегда содержит как минимум 2 супервизора).
На первый взгляд может показаться бессмысленным ограничивать результирующий набор «первой записью» без сортировки. Однако, если интерес представляет только какая-то запись, удовлетворяющая другим условиям в предложении where (или вообще никаких условий), конструкция может быть разумной, поскольку она позволяет избежать потенциально дорогой сортировки.