В случае таблицы EMPLOYEES
начальной точкой является сотрудник с фамилией Kochhar.
-
Определяет условие, которое должно быть выполнено
-
Принимает все допустимые условия
Строка или строки, используемые в качестве корня дерева, определяются с помощью предложения START WITH
. Предложение START WITH
может содержать любое допустимое условие.
Примеры
Работая с таблицей EMPLOYEES
, можно начать с сотрудника King, являющегося президентом компании.
... START WITH manager_id IS NULL |
Либо можно начать с сотрудника Kochhar. Условие START WITH
может содержать подзапрос.
... START WITH employee_id = (SELECT employee_id FROM employees
|
Если предложение START WITH
опущено, проход дерева начинается со всех строк таблицы как с корневых.
Примечание. Предложения CONNECT BY
и START WITH
не входят в стандарт ANSI SQL.
Направление запроса, т.е. выполняется ли он от родительского объекта к дочернему или наоборот, определяется размещением столбца CONNECT BY PRIOR
. Оператор PRIOR
ссылается на родительскую строку. Чтобы найти дочерние строки для родительской строки, сервер Oracle выполняет оценку выражения PRIOR
для родительской строки и других выражений для каждой строки в таблице.
Строки, для которых условие является истинным, являются дочерними строками для данной родительской строки. Сервер Oracle всегда выбирает дочерние строки, оценивая условие CONNECT BY
для текущей родительской строки.
Примеры
Проход сверху вниз для таблицы EMPLOYEES
. Определите иерархическое отношение, в котором значение EMPLOYEE_ID
родительской строки равно значению MANAGER_ID
дочерней строки:
|
Проход снизу вверх для таблицы EMPLOYEES
:
|
Оператор PRIOR
необязательно вставлять в код сразу же после предложения CONNECT BY
.
Следовательно, приведенное ниже предложение CONNECT BY PRIOR
дает те же результаты, что и предложение из предыдущего примера:
... CONNECT BY employee_id = PRIOR manager_id |
Примечание. Предложение CONNECT BY
не может содержать вложенный подзапрос.
Далее: Выгрузка содержимого таблицы в файл