Как зациклить и разобрать параметр xml в хранимой процедуре сервера SQL - PullRequest
13 голосов
/ 22 апреля 2011

Я хочу написать хранимую процедуру, которая принимает параметр XML, анализирует его элементы и вставляет их в таблицу.Это мой XML:

My XML

Я хочу зациклить этот параметр (например, foreach в C #), извлекать каждого человека, а затем анализировать его данные (ID, NAME, LASTNAME).) вставив их в таблицу с 3 полями.

Как это сделать?

1 Ответ

45 голосов
/ 22 апреля 2011

Попробуйте это утверждение:

SELECT
   Pers.value('(ID)[1]', 'int') as 'ID',
   Pers.value('(Name)[1]', 'Varchar(50)') as 'Name',
   Pers.value('(LastName)[1]', 'varchar(50)') as 'LastName'
FROM
   @YourXml.nodes('/Employees/Person') as EMP(Pers)

Это дает хорошее представление этих данных в виде строк / столбцов.

И, конечно, вы можете расширить его, чтобы он стал второй частью воператор INSERT:

INSERT INTO dbo.YourTargetTable(ID, Name, LastName)
  SELECT
     Pers.value('(ID)[1]', 'int') as 'ID',
      Pers.value('(Name)[1]', 'Varchar(50)') as 'Name',
     Pers.value('(LastName)[1]', 'varchar(50)') as 'LastName'
  FROM
     @YourXml.nodes('/Employees/Person') as EMP(Pers)

Готово - никаких циклов, курсоров или других ужасных вещей, подобных этому, не нужно!: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...