2008-11-07 4 views
0

Мне нужно написать хранимую процедуру на сервере SQL, данные которой будут использованы для создания XML-файла.Создание хранимой процедуры для создания дерева XML

Мой файл XML, чтобы быть в составе

<root> 
<ANode></ANode> 
<BNode></BNode> 
<CNode> 
    <C1Node> 
    <C11Node></C11Node> 
    <C12Node></C12Node> 
    </C1Node> 
    <C2Node> 
    <C21Node></C21Node> 
    <C22Node></C22Node> 
    </C2Node> 
    <C3Node> 
    <C31Node></C31Node> 
    <C32Node></C32Node> 
    </C3Node> 
</CNode> 
</root> 

Мой вопрос, в хранимой процедуре можно выбрать значения для анодной и BNode как простой ЗЕЬЕСТ как

Select ANodeVal,BNodeVal from Table 

Но как для создания хранимой процедуры для получения записей для CNode, который представляет собой поддерево, в котором есть 3 или более (динамических) отдельных узла в нем для каждой записи в дополнение к нормальному ANode и BNode.

ответ

2

См

    Nesting XML-returning scalar valued functions

После того, как вы получите повесить гнездовье, и готовы написать число скалярных функций, необходимых для построения сегментов узла снизу вверх (я Wouldn «Я хочу, чтобы многие из них лежали вокруг), тогда это не так сложно.

2

Я бы не рекомендовал делать это в сохраненной процедуре. Если они созданы на языке C#/Python или Java, это сделает блок кода более надежным и более удобным.

0

Если вы можете изменить дизайн базы данных, подумайте о том, чтобы сохранить каждый узел в качестве записи, а не как столбец (как указывает пример выбора образца).

Например, каждая строка может включать в себя следующие поля:

  • RowId
  • ParentRowId
  • Имя
  • ROWDATA

Я предполагаю, что вы передаете данные к приложению, потому что вы указали, что возвращенные данные будут использоваться для генерации XML. В этом случае хранимая процедура будет просто оператором SELECT, оставляя форматирование в приложении.

Большинство реализаций движков XML должны позволять вам добавлять дочерние узлы к существующим родительским узлам. XML построен в памяти и затем «экспортируется» любым способом, необходимым для получения желаемого конечного результата.

Смежные вопросы