Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 select -> xml-файл  [new]
hnkovr
Member

Откуда:
Сообщений: 214
Есть выборка:
select
         ExternalPartnerID
        ,ContactType
        ,ContactData
        ,ExternalOrderID
        ,PositionID
from	Orders

Надо получить xml-файл вида:
<?xml version="1.0" encoding="utf-8"?>

<ns0:DSExternalImport xmlns:ns0="http://tempuri.org/DSExternalImport.xsd">
    <ns0:Partner>
        <ns0:ExternalPartnerID><![CDATA[110354510]]></ns0:ExternalPartnerID>
        <ns0:ContactData>
            <ns0:ContactType>P</ns0:ContactType>
        </ns0:ContactData>
        <ns0:Orders>
            <ns0:ExternalOrderID>15</ns0:ExternalOrderID>
            <ns0:OrderPosition>
                <ns0:PositionID>1</ns0:PositionID>
            </ns0:OrderPosition>
            <ns0:OrderPosition>
                <ns0:PositionID>2</ns0:PositionID>
            </ns0:OrderPosition>
        </ns0:Orders>
    </ns0:Partner>
</ns0:DSExternalImport>

Что использовать?
11 авг 09, 22:14    [7525199]     Ответить | Цитировать Сообщить модератору
 Re: select -> xml-файл  [new]
hnkovr
Member

Откуда:
Сообщений: 214
Пока только удается из
select
         ExternalPartnerID	=	110354510
        ,ContactType		=	'P'
        ,ExternalOrderID	=	15
        ,PositionID			=	1
into	Orders

insert	Orders
select
         ExternalPartnerID	=	110354510
        ,ContactType		=	'P'
        ,ExternalOrderID	=	15
        ,PositionID			=	2

;WITH XMLNAMESPACES (
   'http://tempuri.org/DSExternalImport.xsd' as ns0
)
select 
         ExternalPartnerID	"ns0:ExternalPartnerID"
        ,ContactType		"ContactData/ns0:ContactType"
        ,ExternalOrderID	"Orders/ns0:ExternalOrderID"
        ,PositionID			"Orders/OrderPositions/ns0:PositionID"
from	Orders
order by 1, PositionID
FOR XML PATH ('ns0:Partner'), root('ns0:DSExternalImport')
получить

<ns0:DSExternalImport xmlns:ns0="http://tempuri.org/DSExternalImport.xsd">
  <ns0:Partner>
    <ns0:ExternalPartnerID>110354510</ns0:ExternalPartnerID>
    <ContactData>
      <ns0:ContactType>P</ns0:ContactType>
    </ContactData>
    <Orders>
      <ns0:ExternalOrderID>15</ns0:ExternalOrderID>
      <OrderPositions>
        <ns0:PositionID>1</ns0:PositionID>
      </OrderPositions>
    </Orders>
  </ns0:Partner>
  <ns0:Partner>
    <ns0:ExternalPartnerID>110354510</ns0:ExternalPartnerID>
    <ContactData>
      <ns0:ContactType>P</ns0:ContactType>
    </ContactData>
    <Orders>
      <ns0:ExternalOrderID>15</ns0:ExternalOrderID>
      <OrderPositions>
        <ns0:PositionID>2</ns0:PositionID>
      </OrderPositions>
    </Orders>
  </ns0:Partner>
</ns0:DSExternalImport>

в SQL.

Остаются вопросы:
1. Как получить CDATA?
2. Как избежать дублирования для PositionID = 1 и = 2?
3. Как это выгрузить в xml-файл?
11 авг 09, 22:31    [7525237]     Ответить | Цитировать Сообщить модератору
 Re: select -> xml-файл  [new]
Roman S. Golubin
Member

Откуда: 140002
Сообщений: 11541
hnkovr

Надо получить xml-файл вида:
[skip]
Что использовать?


xml файл "вида" ни о чем не говорит. Схему выкладывайте.
11 авг 09, 23:36    [7525356]     Ответить | Цитировать Сообщить модератору
 Re: select -> xml-файл  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
hnkovr
3. Как это выгрузить в xml-файл?
https://www.sql.ru/faq/faq_topic.aspx?fid=131
12 авг 09, 06:20    [7525642]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить