метка времени в XML, а затем из XML, как? - PullRequest
0 голосов
/ 19 января 2011

люди!Мне нужна помощь в этом. У меня есть таблица TABLE с отметкой времени, и я хочу использовать службу WCF для передачи данных в другой SQL Server. Теперь я пытаюсь смоделировать это, используя «for xml»

DECLARE @aa XML
DECLARE @idoc int
SET @aa =(select * from db_table for xml auto, elements, root('root'), type)

select@aa возвращает

<root>
<Person>
 <preson_id>1</preson_id>
 <Name>Иван</Name>
 <Surname>Иванов</Surname>
 <BurthDate>1915-05-03</BurthDate>
 <guid>2E739E87-3CA4-4ED8-ADD0-8B59957668B8</guid>
 <version>AAAAAAAAB9E=</version>
</Person>
<Person>
 <preson_id>2</preson_id>
 <Name>Николай</Name>
 <Surname>Николаев</Surname>
 <BurthDate>2005-03-05</BurthDate>
 <guid>BDC41C59-D70F-4B70-954E-4918B9516AF8</guid>
 <version>AAAAAAAAB9I=</version>
</Person>
<Person>
 <preson_id>3</preson_id>
 <Name>Максим</Name>
 <Surname>Максимов</Surname>
 <BurthDate>1845-11-15</BurthDate>
 <guid>740E57F3-56BA-48B8-92AF-978D7B1D2712</guid>
 <version>AAAAAAAAB9M=</version>
</Person>
</root>

Это выглядит хорошо для первого взгляда, но когда я пытаюсь получить данные из xml, значения меток времени выглядят не очень хорошо (

EXEC sp_xml_preparedocument @idoc OUTPUT, @aa
SELECT * FROM OPENXML (@idoc, '/root/Person',2)
   WITH db_table

Как мне взять изЗначения временных меток XML в исходном виде?

Извините за мой не очень хороший английский)))

1 Ответ

0 голосов
/ 20 января 2011

Если вы используете MS SQL Server 2005 или более позднюю версию, вы можете сделать это вместо

select
    r.p.value('preson_id[1]', 'int') as preson_id,
    r.p.value('BurthDate[1]', 'date') as BurthDate,
    r.p.value('guid[1]', 'uniqueidentifier') as guid,
    r.p.value('version[1]', 'rowversion') as timestamp
from @aa.nodes('root/Person') r(p)
...