Как сделать параметр CONNECT BY необязательным - PullRequest
1 голос
/ 21 сентября 2011

У меня есть процедура, которая использует Connect By

SELECT <lots of fields>
FROM Group g
  <joins>
WHERE <where>
CONNECT BY PRIOR g.ID = g.ParentID
START WITH g.ID = 1337
ORDER SIBLINGS BY g.Name
;

Число 1337 является параметром этой процедуры, если это значение равно 0, я бы хотел игнорировать код connect byи выполнить все остальное.

Как я могу справиться с этим?

1 Ответ

2 голосов
/ 21 сентября 2011

Наиболее очевидный ответ - проверить значение исключения в предложении connect by:

SELECT <lots of fields>
FROM Group g
  <joins>
WHERE <where>
CONNECT BY PRIOR g.ID = g.ParentID and :param <> 0
START WITH g.ID = :param or :param = 0
ORDER SIBLINGS BY g.Name;
...