В одном из моих сценариев sql мне нужно выполнить хранимую процедуру со следующей строкой xml
<Collection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Field>
<Attributes>
<Attribute Name="CODE1" IsRequired="true" Order="1" IsVisible="true"/>
<Attribute Name="CODE2" IsRequired="true" Order="2" IsVisible="true"/>
</Attributes>
<Rows>
<Row ProductState="5">
<Items>
<Item Name="PROD1" SendCustomer="false"/>
<Item Name="PROD2" SendCustomer="false"/>
</Items>
</Row>
</Rows>
</Field>
</Collection>
Я получаю информацию Attribute
и Item
из разных таблиц. Я пишу универсальную функцию, в которой вы передаете идентификатор и возвращаете эту строку XML, которая используется сценарием SQL для выполнения хранимой процедуры
Иногда мне нужно переопределить значения атрибутов некоторых элементов, таких как SendCustomer
. Моей первоначальной мыслью было десериализовать это во временную таблицу, обновить временную таблицу значением переопределения и затем сериализовать ее обратно в XML.
Итак, по сути, весь процесс сводится к:
- Запрос таблиц, сериализация в XML в функции
- Десериализация XML, сохранение во временной таблице
- При необходимости изменить значения
- Сериализация из таблицы в XML снова
Есть ли в SQL Server 2005 более элегантный способ выполнить весь этот процесс?