【发布时间】:2018-05-09 17:48:47
【问题描述】:
我想为在名称列表中找到 @Name 值的所有元素添加一个新属性。
这是我到目前为止所得到的;它可以工作,但一次只更新一个节点。我必须为每次需要更新的事件更改“PatientNames”值。
update ListDataFormatter_Test
SET FieldDefinition.modify('
insert attribute PlainTextPersonNotification {"True"}
into (/Fields/Field[@Name="PatientNames"])[1]
')
我希望能够使用基于列表(如标准 SQL 中的“IN”子句)的单个命令对其进行更新。
update ListDataFormatter_Test
SET FieldDefinition.modify('
insert attribute PlainTextPersonNotification {"True"}
into (/Fields/Field[@Name in ("PatientNames", "ProviderNames", "PracticeSettingsName", "PracticeSettingsMainAddresses", "PracticeSettingsPhones")])[1]')
FieldDefinition 是 XML,其外观示例如下所示:
<Fields>
<CalledDataFormatter Uid="9D7520C3-B507-463F-9CFD-18BDE5A74677" Prefix="PrimaryCare" />
<Field Name="PatientNames" Layout="Name" />
<Field Name="PatientPrimaryAddresses" Layout="Address" />
<Field Name="PatientSecondaryAddresses" Layout="Address" />
<Field Name="PatientDOB" Layout="Date" />
<Field Name="PracticeSettingsName" Layout="Date" />
我得到了正确的结果,但我必须为要修改的每个 @Name 值创建一个单独的更新命令。
<Fields>
<CalledDataFormatter Uid="9D7520C3-B507-463F-9CFD-18BDE5A74677" Prefix="PrimaryCare" />
<Field Name="PatientNames" PlainTextPersonNotification="True" Layout="Name" />
<Field Name="PatientPrimaryAddresses" Layout="Address" />
<Field Name="PatientSecondaryAddresses" Layout="Address" />
<Field Name="PatientDOB" Layout="Date" />
<Field Name="PracticeSettingsName" PlainTextPersonNotification="True" Layout="Date" />
我的@Name 值列表现在很小,但每次会议都会增加。
【问题讨论】:
标签: xml tsql sql-server-2012