0

コンテキスト: 一部の従業員の手当の値を £1875 から £7500 に増やし、残高を £7500 から現在使用しているものを差し引いた金額に更新したいと考えています。

私の Update ステートメントは一度に 1 人の従業員に対して機能しますが、約 6000 を含むテーブルから約 200 レコードを更新する必要があります。

以下を変更して複数のレコードを更新する方法を試すのに苦労していますが、更新する必要があるのは 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 EG 123456 の PK を保持する列 ID があります。

<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>
4

1 に答える 1