ORDER MEMBER FUNCTION ORDER (a staff_assignment_o)
RETURN NUMBER IS BEGIN
IF    (staff_id < a.staff_id) THEN RETURN -1; ELSIF (staff_id > a.staff_id) THEN RETURN + 1; ELSE BEGIN
IF      (start_on.value < a.start_on.value)
RETURN -1; ELSIF   (start_on.value > a.start_on.value)
RETURN +1; ELSE
RETURN 0; END IF; END IF; END;
Процесс написания функций ORDER может оказаться несколько утомительным. Кроме того, они могут вызываться тысячи раз, если используются во фразах ORDER BY предложения SELECT. Это обусловлено тем, что сортировка требует вызова этой функции для каждого сравнения строк, производимого в ходе этой операции, т.е. производится минимум log2N вызовов функции, где N — число строк, подлежащих сортировке.
Наборы данных

Набор — это множество экземпляров абстрактного типа данных. OracleS поддерживает два новых типа наборов — массивы переменной длины (обычно они называются VARRAY) и вложенные таблицы. Эти два типа существенно отличаются друг от друга. Каждый из них имеет свои достоинства и недостатки, которые мы и рассмотрим в следующих разделах.
Массивы переменной длины
Массивы переменной длины (VARRAY) — это новый тип данных, реализованный как в SQL, так и в PL/SQL для поддержки повторяющихся групп данных. В PL/SQL-варианте доступ к отдельным элементам этих массивов может осуществляться с помощью того же индексного синтаксиса, который используется для индексированных массивов. В SQL прямое обращение к отдельным элементам VARRAY недопустимо, но весь массив VARRAY может извлекаться из строки в переменную PL/SQL типа VARRAY и, наоборот, помещаться из переменной в строку.
VARRAY упорядочены в том смысле, что порядок записи значений в них всегда сохраняется и они имеют объявленное максимальное число элементов. Массивы переменной длины не поддерживают вложенность, т.е. элементы VARRAY не могут содержать другие VARRAY.
104	OraclcS