DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Псевдостолбцы

Псевдостолбцы (pseudocolumns) - это дополнительные функции, которые можно вызвать только из SQL-операторов. Синтаксически они аналогич­ны столбцам таблиц, однако реально совсем не похожи на них. Их скорее можно назвать частью процесса выполнения SQL-операторов.

CURRVAL и NEXTVAL
Псевдостолбцы CURRVAL (текущее значение) и NEXTVAL (следующее значение) применяются в последовательностях. Последовательность (sequ­ence) — это объект 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").

 


цифровая печать брошюр







jAntivirus