I am trying to select some values from order xml using openxml api. Whenever I am executing this command I am seeing Null results.The statement I am writing under select - with may be wrong. Any suggestion how can I get the correct value.
DECLARE @XML AS XML, @hDoc AS INT, @SQL NVARCHAR (MAX)
SELECT @XML = N'<order>
<order-date>2017-07-24T20:48:57.000Z</order-date>
<invoice-no>00000001</invoice-no>
<customer>
<customer-name>abc abcd</customer-name>
<customer-email>[email protected]</customer-email>
</customer>
<current-order-no>00000001</current-order-no>
<payments>
<payment>
<credit-card>
<card-type>VISA</card-type>
<card-number>XXXX-XXXX-XXXX-1111</card-number>
<card-holder>abc</card-holder>
<expiration-month>1</expiration-month>
<expiration-year>2021</expiration-year>
</credit-card>
<amount>325.48</amount>
</payment>
</payments>
</order>';
EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML
SELECT *
FROM OPENXML(@hDoc, '/order/customer',2)
WITH
(
customerName [varchar](50) '@customer-name',
customerEmail [varchar](100) '@customer-email'
)
SELECT cardType, cardNumber, cardHolder
FROM OPENXML(@hDoc, '/order/payments/payment/credit-card',2)
WITH
(
cardType [varchar](50) '@card-type',
cardNumber [varchar](100) '@card-number',
cardHolder [varchar](100) '@card-holder'
)
EXEC sp_xml_removedocument @hDoc
GO