Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
кожин / Лекции / Лекция 06 select.doc
Скачиваний:
31
Добавлен:
20.03.2016
Размер:
172.03 Кб
Скачать
      1. Фраза current of

Если фраза CURRENT OF используется в операторе UPDATE, курсор предварительно должен быть опреде­лен с фразой FOR UPDATE а операторе SELECT. Кур­сор должен быть открыт и позиционирован на стро­ку. Если курсор не был открыт или не был выполнен FETCH, фраза CURRENT OF завершится с ошибкой и вернется нулевое число строк.

Пример Для замены в текущей строке жалования на 2000 введите:

UPDATE EMP

SET SAL = 2000

WHERE CURRENT OF CURSOR EMP_CURSOR

      1. Фразы connect by и start with

Выдача данных на основании их иерархической взаи­мосвязи.

SELECT ...

FROM ...

...

[ CONNECT BY PRIOR expr operator expr

| expr operator PRIOR expr

[ START WITH condition ] ]

PRIOR специфицирует направление обхода дерева. ORACLE берет вершину с PRIOR прежде вершины без этой фразы.

Фраза CONNECT BY используется для запросов по ие­рархическим связям. Она специфицирует строки, вы­бираемые в иерархическом порядке а также определяет отношение, используемое для объедине­ния строк в иерархию.

      1. PRIOR

Фраза PRIOR определяет порядок выборки (сперва родительскую или дочернюю вершину).

Фраза PRIOR должна использоваться перед одним из выражений фразы CONNECT BY. Часть выражения, в которой находится PRIOR, определяет родителя в каждом отношении "родитель-потомок"; другая часть выражения определяет потомка. Например, CONNECT BY PRIOR EMPNO=MGR означает, что CONNECT BY будет возвращать менеджеров (определяемых в EMPNO) пе­ред служащими (определяемых в MGR). CONNECT BY EMPNO=PRIOR MGR означает, что теперь служащие бу­дут выдаваться перед менеджерами.

Количество уровней фразы CONNECT BY ограничивает­ся доступной пользователю памятью.

Фразу CONNECT BY нельзя использовать вместе с подзапросами и объединениями.

      1. Start with

Фраза START WITH идентифицирует строки (или стро­ку), которые будут использоваться в качестве кор­ня дерева, назначая условие, которому они должны удовлетворять. Отсутствие этой фразы означает начало со всех столбцов, удовлетворяющих условию фразы WHERE.

Во фразе START WITH допустимы подзапросы.

Если в операторе SELECT используется фраза CONNECT BY, в нем же можно воспользоваться псев­достолбцом LEVEL, который возвращает 1 для корня, 2 - для вершины, порожденной корнем, 3 - для вну­ка и т.д.

      1. Использование order by

Использование ORDER BY нарушает порядок, в кото­ром CONNECT BY возвращает строки. При использова­нии CONNECT BY существует неявный порядок (ORDER BY). Если уровень строки меньше, чем уровень пре­дыдущей строки, она рассматривается как дочерняя к предыдущей. Однако, ORDER BY маскирует неявный порядок выдачи строк помощью CONNECT BY. Хотя ошибки и не выдается, использование ORDER BY от­рицает результаты работы CONNECT BY.

Пример SELECT LPAD(' ',2*LEVEL) || ENAME ORG_CHART, EMPNO,MGR, JOB

FROM EMP

CONNECT BY PRIOR EMPNO = MGR

START WITH ENAME = 'KING'

ORG_CHART ENPNO MGR JOB

--------------- --------- ------ ----------

KING 7839 PRESIDENT

JONES 7566 7839 MANAGER

SCOTT 7788 7566 ANALYST

ADAMS 7876 7788 CLERK

FORD 7902 7566 ANALYST

SMITH 7369 7902 CLERK

BLAKE 7698 7839 MANAGER

ALLEN 7499 7698 SALESMAN

WARD 7521 7698 SALESMAN

MARTIN 7654 7698 SALESMAN

TURNER 7844 7698 SALESMAN

JAMES 7900 7698 CLERK

CLARK 7782 7839 MANAGER

MILLER 7934 7782 CLERK

Соседние файлы в папке Лекции