как извлечь данные из XML и обновить таблицу базы данных - PullRequest
0 голосов
/ 15 февраля 2011

Я передаю сериализованную коллекцию (XML) хранимой процедуре. Моя структура XML -

<ArrayofDepartmentEntity>
  <Department>
    <id>1004</id>
    <budget>2500.oo</budget>
  </Department>
  <Department>
    <id>1080</id>
    <budget>3500.oo</budget>
  </Department>
  <Department>
    <id>1029</id>
    <budget>4500.00</budget>
  </Department>
</ArrayofDepartmentEntity>

Как я могу ОБНОВИТЬ соответствующий столбец бюджета, где идентификаторы отделов находятся выше XML ?? мой синтаксис SP-

ALTER PROCEDURE [dbo].[usp_SaveDepartentBudget] (                  
@departmentBudgetXML ntext = NULL                  
)                          
AS                        
BEGIN 
DECLARE @ptrHandle int     
EXEC sp_xml_preparedocument @ptrHandle OUTPUT, @departmentBudgetXML
....Here I want to update Budget foreach departmentID in @departmentBudgetXML

1 Ответ

0 голосов
/ 15 февраля 2011

Попробуйте этот код.

DECLARE @XMLString XML
SET @XMLString = '<ArrayofDepartmentEntity>
  <Department>
    <id>1004</id>
    <budget>2500.oo</budget>
  </Department>
  <Department>
    <id>1080</id>
    <budget>3500.oo</budget>
  </Department>
  <Department>
    <id>1029</id>
    <budget>4500.00</budget>
  </Department>
</ArrayofDepartmentEntity>'
SELECT
Department.col.value('id[1]','VARCHAR(20)')AS Id,
Department.col.value('budget[1]','VARCHAR(20)')AS Budget
FROM @XMLString.nodes('//Department') Department(col)

РЕДАКТИРОВАТЬ : вот код для обновления

UPDATE tblInfo SET Budget = Department.col.value('budget[1]','MONEY')
FROM @XMLString.nodes('//Department') Department(col)
WHERE tblInfo.Id = Department.col.value('id[1]','INT')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...