2009-08-10 7 views
1

Ich arbeite an einer gespeicherten Prozedur für eine Kalenderanwendung. Jedes Ereignis im Kalender kann mehrere Daten haben. Diese Information wird in zwei verschiedenen Tabellen gespeichert. Anstatt zwei gespeicherte Prozeduren zu schreiben und die zweite mehrmals aufzurufen, um die Daten zu speichern, gebe ich sie lieber einfach mit XML weiter. Das Problem ist, dass ich einige der Werte in Datumstypen und einen von ihnen in einen Ntext-Typ konvertieren möchte.Konvertieren von Werten, die in XML gespeichert sind, in Ntext- und Datumstypen in SQL Server 2005

Hier ist ein einfaches Beispiel, was ich habe, so weit:

Msg 9500, Stufe 16, Status 1, Zeile 4:

declare @samplexml as xml 
set @samplexml = '<root><scheduleRow><dateBegin>4/5/2009</dateBegin><dateEnd>4/6/2009</dateEnd><timeBegin>1:00 pm</timeBegin><timeEnd>2:00 pm</timeEnd><location>Sheas House</location></scheduleRow><scheduleRow><dateBegin>5/5/2009</dateBegin><dateEnd>5/6/2009</dateEnd><timeBegin>2:00 pm</timeBegin><timeEnd>3:00 pm</timeEnd><location>Metro Buffet</location></scheduleRow></root>' 

select x.scheduleRow.value('./dateBegin[1]','varchar(20)') as date_begin, 
     x.scheduleRow.value('./dateEnd[1]','varchar(20)') as date_end, 
     x.scheduleRow.value('./timeBegin[1]','varchar(20)') as time_begin, 
     x.scheduleRow.value('./timeEnd[1]','varchar(20)') as time_end, 
     x.scheduleRow.value('./location[1]','ntext')  as location 
    from @samplexml.nodes('/root/scheduleRow') as x(scheduleRow) 

Wenn Sie versuchen, dies zu laufen, diese Fehlermeldung angezeigt werden Der in der VALUE-Methode verwendete Datentyp 'ntext' ist ungültig.

Was mache ich hier falsch? Gibt es eine Möglichkeit zu tun, was ich will?

Antwort

3

Verwenden Sie keine TEXT-, NTEXT- und IMAGE-Typen für neue Entwicklungen. Sie sind deprecated und werden in einer zukünftigen Version von SQL entfernt. Auch seit SQL 2k5 wurden sie nicht mehr von neuen Funktionen unterstützt, den Case-in-Point-XML-Methoden.

Verwenden Sie stattdessen VARCHAR (MAX), NVARCHAR (MAX) und VARBINARY (MAX).

Verwandte Themen