Контекст: Я хочу увеличить размер пособия для некоторых сотрудников с £ 1875 до £ 7500 и обновить их баланс до 7500 фунтов стерлингов за вычетом того, что они использовали в настоящее время.updatexml только для определенных строк
Мое заявление Update работает на одного работника в то время, но мне нужно обновить около 200 записей, из таблицы, содержащей около 6000.
Я изо всех сил, чтобы тренировки, как изменить ниже, чтобы обновить более одна запись, но только 200 записей, которые мне нужно обновить.
UPDATE employeeaccounts
SET xml = To_clob(Updatexml(Xmltype(xml),
'/EmployeeAccount/CurrentAllowance/text()',187500,
'/EmployeeAccount/AllowanceBalance/text()',
750000 - (SELECT Extractvalue(Xmltype(xml),
'/EmployeeAccount/AllowanceBalance',
'xmlns:ts=\"http://schemas.com/\", xmlns:xt=\"http://schemas.com\"'
)
FROM employeeaccounts
WHERE id = '123456')))
WHERE id = '123456'
Пример столбца xml (хранится как clob), который я хочу обновить. Таблица имеет столбец ID держащиеся PK сотрудники ID EG 123456
<EmployeeAccount>
<LastUpdated>2016-06-03T09:26:38+01:00</LastUpdated>
<MajorVersion>1</MajorVersion>
<MinorVersion>2</MinorVersion>
<EmployeeID>123456</EmployeeID>
<CurrencyID>GBP</CurrencyID>
<CurrentAllowance>187500</CurrentAllowance>
<AllowanceBalance>100000</AllowanceBalance>
<EarnedDiscount>0.0</EarnedDiscount>
<NormalDiscount>0.0</NormalDiscount>
<AccountCreditLimit>0</AccountCreditLimit>
<AccountBalance>0</AccountBalance>
</EmployeeAccount>
Как 200 вы хотите обновить определили? И можете ли вы добавить некоторые примеры данных к вопросу? –
Поскольку это всего лишь 200, которые я отправил через excel, я надеюсь просто сделать идентификатор в (123456, 654321 и т. Д. – user3811820
Так что действительно проблема заключается в том, как сопоставить старый баланс аккаунта, который вы получаете в subquery, с обновляемой строкой - так как вы не можете просто поместить то же самое в список в обоих? –