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

Откуда:
Сообщений: 311
Добрый день.

В SQL
Microsoft SQL Server 2012 (SP1) - 11.0.3412.0 (X64) 
Mar 2 2014 01:25:09
Copyright (c) Microsoft Corporation
Developer Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)

+ На вход поступает XML следующего вида:
declare @x xml =
'<env:Envelope 
  xmlns:enc="http://www.w3.org/2003/05/soap-encoding" 
  xmlns:ns1="http://order208/SoapOrder" 
  xmlns:ns2="http://xml.apache.org/xml-soap" 
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:env="http://www.w3.org/2003/05/soap-envelope">
  <item>
    <key xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">CLASSIC_3PC</key>
    <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:Map">
      <item>
        <key xsi:type="xsd:string">code</key>
        <value xsi:type="xsd:int">1</value>
      </item>
      <item>
        <key xsi:type="xsd:string">name</key>
        <value xsi:type="xsd:string">Value_1</value>
      </item>
    </value>
    <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:Map">
      <item>
        <key xsi:type="xsd:string">code</key>
        <value xsi:type="xsd:int">2</value>
      </item>
      <item>
        <key xsi:type="xsd:string">name</key>
        <value xsi:type="xsd:string">Value_2</value>
      </item>
    </value>
  </item>
  <item>
    <key xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">UNKNOWN</key>
    <value xsi:nil="true"/>
  </item>
</env:Envelope>'


Помогите создать XML-схему, чтоб получить следующую выборку
CTPcodename
CLASSIC_3PC1Value_1
CLASSIC_3PC2Value_2
UNKNOWNNULLNULL
30 апр 14, 09:41    [15956243]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать xml name schema  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
with xmlnamespaces('http://www.w3.org/2003/05/soap-envelope' as env)
select
  t.n.value('(../key/text())[1]', 'varchar(20)') name,
  t.n.value('(item[key/text()="code"]/value/text())[1]','int') code,
  t.n.value('(item[key/text()="name"]/value/text())[1]','varchar(20)') name
from @x.nodes('/env:Envelope/item/value') t(n)
30 апр 14, 10:14    [15956457]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать xml name schema  [new]
Greenhorn
Member

Откуда:
Сообщений: 311
Сон Веры Павловны,

Спасибо.
А как с помощью "CREATE XML SCHEMA COLLECTION" тоже самое изобразить ?
30 апр 14, 10:23    [15956509]     Ответить | Цитировать Сообщить модератору
 Re: Помогите создать xml name schema  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Greenhorn
А как с помощью "CREATE XML SCHEMA COLLECTION" тоже самое изобразить ?
А причём тут это?

- Который час?
- +22!

У вас SOAP запрос. Видимо к Web серверу. Почему вы на нём нормально не считываете данные в нужном формате и не посылаете в процедуру? Табличные переменные давно есть.
30 апр 14, 14:44    [15958825]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить