XML-иерархия Oracle с дочерними узлами (NEWCONTEXTFROMHIERARCHY)

Во-первых, вам нужно добавить собственное пространство имен XML, которое будет определять пространство имен, в котором определены параметры:

xmlns:properties="clr-namespace:TestSettings.Properties"

Затем в вашем файле XAML обращайтесь к экземпляру настроек по умолчанию, используя следующий синтаксис :

{x:Static properties:Settings.Default}

Итак, вот окончательный код результата:


Источник: WPF - Как привязать элемент управления к свойству, определенному в настройках?


Примечание. Как указано @Daniel и @nabulke, не забудьте установить модификатор доступа вашего файла настроек на Public и Scope до User

1
задан faruk13 6 March 2019 в 08:48
поделиться

1 ответ

Если честно, я никогда не видел эту функцию (NEWCONTEXTFROMHIERARCHY), но это то, что мне удалось сделать. Я сделал функцию, которая создает необходимую часть иерархического дерева и объединяет два дополнительных параметра (базовый продукт и продукт). Затем я использовал newcontextfromhierarchy. Таким образом, функция возвращает весь узел.

create or replace function xml_hier(i_id in varchar2, i_base in varchar2, i_name in varchar2) return xmltype is
  v_ret xmltype;
begin
  select dbms_xmlgen.getxmltype(dbms_xmlgen.newcontextfromhierarchy('
    with t as (
      select level lvl, xmlelement("PGR", XMLATTRIBUTES(NAME))
        from PRODUCTGROUPS
        where id in (select id 
                       from PRODUCTGROUPS
                       connect by prior PARENTID = ID start with id = '||i_id||')
        connect by PARENTID = prior ID
        start with parentid is null)
    select * from t 
    union all
    select (select max(lvl) + 1 from t), XMLELEMENT("PRO", XMLATTRIBUTES('''||i_base||''' as "name")) from dual
    union all
    select (select max(lvl) + 2 from t), XMLELEMENT("PRV", XMLATTRIBUTES('''||i_name||''' as "name")) from dual'))
  into v_ret
  from dual;
  return v_ret;
end;

Итак, с созданными вами таблицами я запускаю:

select p.id,
       xmlroot(
         xmlelement("IMPORT",  
           xml_hier(g.id, p.baseproduct, p.name))
         , version '1.0" encoding="utf-8') as xml
  from products p 
  join productgroups g on p.productgroupid = g.id;

и в результате получаю:

<?xml version="1.0" encoding="utf-8"?>
<IMPORT>
  <PGR NAME="Product Group 1">
    <PGR NAME="Product Group 1-1">
      <PGR NAME="Product Group 1-1-1">
        <PRO name="Product X">
          <PRV name="Product Variant 1"/>
        </PRO>
      </PGR>
    </PGR>
  </PGR>
</IMPORT>

Иерархический запрос сначала работает в обратном направлении, в порядке найти предков. Затем все идет нормально, используя только уже известные id.

Надеюсь, это поможет:)

0
ответ дан Ponder Stibbons 6 March 2019 в 08:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: