Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

XML като параметър в съхранена процедура (sql сървър)

Първата ви заявка, за която твърдите, че работи, всъщност не работи с предоставения от вас XML. Трябва да е така.

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

Втората версия трябва да бъде

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

Тъй като използвате SQL Server 2008 или по-нова версия, можете вместо това да използвате XML типа данни.

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
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server DATEPART() срещу DATENAME() – Каква е разликата?

  2. Как да изпратите HTML имейл от SQL Server (T-SQL)

  3. Предният интерфейс на MS-Access не разпознава дати от SQL Server

  4. Как да получа план за изпълнение на заявка в SQL Server?

  5. Когато отидем за кръстосано прилагане и когато отидем за вътрешно присъединяване в SQL Server 2012