sql >> Database >  >> RDS >> Sqlserver

XML als parameter in opgeslagen procedure (sql-server)

Uw eerste zoekopdracht waarvan u beweert dat deze werkt, werkt in feite niet met de door u verstrekte XML. Het zou zo moeten zijn.

declare @handle int
declare @XML xml = '<ROOT><ids><id>2013-01-01</id></ids><ids><id>2013-01-02</id></ids></ROOT>'
exec sp_xml_preparedocument @handle out, @XML
select * from openxml(@handle, '/ROOT/ids', 2) with (id Date)
exec sp_xml_removedocument @handle

De tweede versie zou moeten zijn

declare @handle int
declare @XML xml = '<ROOT><id>2013-01-01</id><id>2013-01-02</id></ROOT>'
exec sp_xml_preparedocument @handle out, @XML
select * from openxml(@handle, '/ROOT/id', 2) with (id Date '.')
exec sp_xml_removedocument @handle

Aangezien u SQL Server 2008 of later gebruikt, kunt u in plaats daarvan het gegevenstype XML gebruiken.

declare @XML xml = '<ROOT><id>2013-01-01</id><id>2013-01-02</id></ROOT>'

select T.N.value('text()[1]', 'date') as id
from @XML.nodes('ROOT/id') as T(N)



  1. Database versus JSON versus ingesloten databases

  2. Instellingen voor het ontsnappen van PostgreSQL-tekenreeksen

  3. Lijst Enum-waarden in dropdown php mysql

  4. MySQL Rollback in transactie