Генерация XML из самореференсной таблицы Oracle - PullRequest
2 голосов
/ 10 января 2011

У меня есть БД Oracle с самообращающейся таблицей иерархических медицинских данных, которая называется "услуги".

Услуга

service_id ---------- номер
имя_сервера ----- varchar2 (200)
service_parent --- номер

, где каждая служба может иметь 1 родительскую службу, а также n детей. Службы «верхнего уровня» будут иметь значение service_parent, равное нулю.

Мне нужно создать структуру XML из этих данных. Я исследовал сеть, но не могу найти пример такого рода генерации XML. Вот пример вывода XML, который мне нужен:

<services>
    <service id="1" name="Medicine">
        <service id="10" name="Anesthesia">

        </service>
    </service>
    <service id="2" name="Surgery">
        <service id="3" name="Cardiology">
            <service id="4" name="Bypass">

            </service>
            <service id="5" name="Transplant">

            </service>
            <service id="6" name="Valve Replacement">

            </service>
        </service>
        <service id="9" name="Ear Nose Throat">
            <service id="7" name="Laryngectomy">

            </service>
            <service id="8" name="Septoplasty">

            </service>
        </service>
    </service>  
</services>

Я пытался использовать CONNECT_BY_ISLEAF, CONNECT_BY_PATH, CONNECT BY PRIOR и т. Д. ... но самое близкое, что я мог получить, было:

<services>
<service id="1" name="Medicine" />
<service id="10" name="Anesthesia" />
<service id="2" name="Surgery" />
<service id="3" name="Cardiology" />
<service id="4" name="Bypass" />
<service id="5" name="Transplant" />
<service id="6" name="Valve Replacement" />
<service id="9" name="Ear Nose Throat" />
<service id="8" name="Laryngectomy" />
<service id="7" name="Septoplasty" />
</services>

Каков наилучший способ получить структуру XML выше?

1 Ответ

2 голосов
/ 10 января 2011

Этот пример с использованием DBMS_XMLGEN.newContextFromHierarchy выглядит очень похоже на то, что вы пытаетесь сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...