次のXMLクエリ(実際にはWebサービス呼び出し)からフィールドをクエリしようとしています。
<soap:Envelope xmlns:xsi="[schema]" xmlns:xsd="[shema]" xmlns:soap="[schema]">
<soap:Body>
<RunPackage xmlns="http://tempuri.org/">
<xmlDoc>
<Request>
<SubscriberCode>543253</SubscriberCode>
<CompanyCode>54325</CompanyCode>
<BranchName>TestBranchName</BranchName>
<TempWorksUserName>TempWorksUserName</TempWorksUserName>
[...]
次のXMLクエリを使用します。
WITH XMLNAMESPACES('[schema]' AS soap2, DEFAULT '[schema]')
SELECT TransactionID, T2.Loc.query('data(Request/SubscriberCode)') as 'SubscriberCode'
FROM TempWorksRequest
CROSS APPLY RequestXML.nodes('soap2:Envelope/soap2:Body/RunPackage/xmlDoc') as T2(Loc)
実行されますが、結果は返されません。
同じクエリを作成しても名前空間のものを削除すると、機能します。たとえば、次のように正常に機能します。
<xmlDoc> <Request> <SubscriberCode> 543253 </ SubscriberCode> <CompanyCode> 54325 </ CompanyCode> <BranchName> TestBranchName </ BranchName> [...]
SQLクエリ:
--MITS名前空間を使用できるように、MITSの名前空間を定義します。WITH XMLNAMESPACES('[schema]' AS soap2、DEFAULT'[schema]')
SELECT TransactionID、T2.Loc.query('data(Request / SubscriberCode)')as'SubscriberCode' FROM TempWorksRequest CROSS APPLY RequestXML.nodes('xmlDoc')as T2(Loc)
何か案は?