Псевдостолбцы (pseudocolumns) - это дополнительные функции, которые можно вызвать только из SQL-операторов. Синтаксически они аналогичны столбцам таблиц, однако реально совсем не похожи на них. Их скорее можно назвать частью процесса выполнения SQL-операторов.
CURRVAL и NEXTVAL
Псевдостолбцы CURRVAL (текущее значение) и NEXTVAL (следующее значение) применяются в последовательностях. Последовательность (sequence) — это объект Oracle, который используется для генерирования уникальных чисел. Последовательность создается с помощью DDL-команды CREATE SEQUENCE. После того как последовательность создана, к ней можно обратиться.
Значения последовательностей могут быть использованы в списке выбора запроса, в предложении VALUES оператора INSERT и в предложении SET оператора UPDATE. Однако их нельзя указывать в условиях WHERE и в процедурных операторах PL/SQL. Ниже приведены примеры правильного применения CURRVAL и NEXTVAL:
Следующий сеанс SQL*Plus иллюстрирует применение CURRVAL (предполагается, что для создания 12-ти строк таблицы students использовался сценарий tables, sql):
LEVEL
LEVEL (уровень) применяется в операторах SELECT для просмотра таблицы с учетом иерархического дерева, при этом используются конструкции START WITH (начать с) и CONNECT BY (соединиться посредством). Псевдостолбец LEVEL возвращает текущий уровень дерева в виде значения типа NUMBER. Более подробно об этом говорится в руководстве "Server SQL Reference".
ROWID
Псевдостолбец ROWID (идентификатор строки) используется в списках выбора запросов и возвращает идентификатор конкретной строки. Внешним форматом ROWID является строка символов (см. главу 3). Псевдостолбец ROWID возвращает значение типа ROWID. К примеру, следующий запрос возвращает идентификаторы всех строк таблицы rooms:
□ sql> select rowid 2 FROM rooms; ROWID
AAAF3PAAFAAAABDAAA AAAF3PAAFAAAABDAAB AAAF3PAAFAAAABDAAC AAAF3PAAFAAAABDAAD AAAF3PAAFAAAABDAAE AAAF3PAAFAAAABDAAF AAAF3PAAFAAAABDAAG AAAF3PAAFAAAABDAAH AAAF3PAAFAAAABDAAI
9 rows selected.
Внимание
Форматы ROWID, используемые в Огас1е7и Oracle8, различны, Индексно организованные таблицы (новые в Oracle8i) также имеют иной формат. Более того, базы данных, отличные от Oracle, доступные через шлюз, могут иметь другой формат ROWID. Однако внешним форматом для всех ROWID является строка символов (см. главу 3).
ROWNUM
Псевдостолбец ROWNUM возвращает номер текущей строки запроса. Он полезен для ограничения общего числа строк и используется в первую очередь в условиях WHERE запросов и в предложениях SET операторов UPDATE. Значение, возвращаемое ROWNUM, имеет тип NUMBER. Например, следующий запрос возвращает только две первые строки таблицы students:
WHERE ROWNUM 3;
ROWNUM первой строки равен ROWNUM второй строки — 2 и т.д. Значение ROWNUM присваивается строке до выполнения сортировки строк (посредством ORDER BY). В результате нельзя пользоваться ROWNUM для считывания п старших строк, расположенных в заданном порядке. Рассмотрим оператор:
В результате выполнения этого оператора будут возвращены две строки таблицы students, упорядоченной по столбцу first_name. Однако вовсе не обязательно, что это будут две первые строки в общем порядке сортировки. Чтобы гарантировать выбор нужных строк, для этого запроса следует создать курсор и считать только две первые строки (см. главу 6). Также можно использовать встроенное (inline) представление с ORDER BY (см. "Server SQL Reference").
< Предыдущая | Следующая > |
---|