Friday, March 9, 2012

opnexml

<marketData>
<date>10-jan-2001</date>
<producedBy>person1</producedBy>
<SpotRates>
<SpotRate code="USDCAD">
<values>
<value type="BID">1.1276</value>
<value type="ASK">1.1277</value>
<value type="MID">1.127649997783</value>
</values>
</SpotRate>
<SpotRate code="EURUSD">
<values>
<value type="BID">1.3607</value>
<value type="ASK">1.3608</value>
<value type="MID">1.36075</value>
</values>
</SpotRate>
<SpotRate code="GBPUSD">
<values>
<value type="BID">2.0025</value>
<value type="ASK">2.0027</value>
<value type="MID">2.0026</value>
</values>
</SpotRate>
</SpotRates>
</marketData>

-
How can I modify the sql below so that I can also insert SpotRate code from the xml data above?

insert into tblSpotRates
(
SpotRateCode
BID,
ASK,
MID

)
select
?
Bid,
Ask,
Mid
FROM OPENXML (@.idoc, '/marketData/SpotRates/SpotRate/values',2)
WITH (
Bid varchar(50) 'value[1]',
Ask varchar(50) 'value[2]',
Mid varchar(50) 'value[3]'
)

use the following script..

Code Snippet

Declare @.XML as varchar(1000);

Declare @.idoc as int;

Select @.Xml='<marketData>

<date>10-jan-2001</date>

<producedBy>person1</producedBy>

<SpotRates>

<SpotRate code="USDCAD">

<values>

<value type="BID">1.1276</value>

<value type="ASK">1.1277</value>

<value type="MID">1.127649997783</value>

</values>

</SpotRate>

<SpotRate code="EURUSD">

<values>

<value type="BID">1.3607</value>

<value type="ASK">1.3608</value>

<value type="MID">1.36075</value>

</values>

</SpotRate>

<SpotRate code="GBPUSD">

<values>

<value type="BID">2.0025</value>

<value type="ASK">2.0027</value>

<value type="MID">2.0026</value>

</values>

</SpotRate>

</SpotRates>

</marketData>'

EXEC sp_xml_preparedocument @.idoc OUTPUT, @.xml

select

Code,

Bid,

Ask,

Mid

FROM OPENXML (@.idoc, '/marketData/SpotRates/SpotRate',1)

WITH (

codevarchar(100),

Bidvarchar(50) 'values/value[1]',

Askvarchar(50) 'values/value[2]',

Midvarchar(50) 'values/value[3]'

)

No comments:

Post a Comment