2011-01-19 5 views
0

personnes! i besoin d'aide dans ce j'ai une table avec le champ d'horodatage et je veux utiliser le service de WCF pour transférer des données dans d'autres SQL Server Maintenant, je tente de simuler ce, en utilisant « pour xml »horodatage en XML puis en XML, comment?

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

select @aa retourne

<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> 

Il y a de bon pour le premier coup d'oeil, mais lorsque je tente de prendre des données de xml, les valeurs d'horodatage semble pas bon (

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

Comment puis-je prendre des valeurs d'horodatage xml dans l'aspect source?

Désolé pour mon pas bien l'anglais)))

+0

Quelle mise en œuvre de SQL vous utilisez? SQL Server, MySQL, Oracle? – JNK

+1

D'un côté, votre XML (et la base de données à partir de laquelle il a été créé) a des fautes d'orthographe dans ses noms d'éléments. BurthDate devrait être BirthDate et preson_id devrait être person_id –

+0

et à quoi ressemblent les valeurs d'horodatage que vous extrayez du XML? Où est le champ d'horodatage? Je peux seulement voir une date dans BurthDate –

Répondre

0

Si vous utilisez MS SQL Server 2005 ou plus tard, vous pouvez le faire à la place

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) 
+0

C'est génial, pouvez-vous me donner un lien vers reed plus sur nœuds, et la construction rpvalue? – amigo

+0

http://msdn.microsoft.com/fr-fr/library/ms190798.aspx –