我想从xml获得价值。 我的代码看起来像:
DECLARE @XML xml
set @XML = (select InXML from ServiceBrokerQueueFault where id=29140)
select @XML
select
x.Rec.query('./nrZamowienia').value('.', 'nvarchar(2000)') AS 'NrZamowienia'
FROM @XML.nodes('/powiadomienie')as x(Rec)
我的@XML显示:
<ns2:powiadomOZdarzeniu xmlns:ns2="http://cyfrowypolsat.pl/interfejsy/umowy/zamowieniaom/v1/Zdarzenie">
<metryka>
<uzytkownik>om-system</uzytkownik>
<system>OM</system>
<data>2017-10-25T15:36:23.006</data>
<uid>BAC27CDB-9888-46DD-BDE3-B3752852C50C</uid>
<nazwaKwalifikowanaInterfejsuDoWywolaniaZwrotnego>{http://cyfrowypolsat.pl/service/wyrocznia/om/v1/notification}sendCallback</nazwaKwalifikowanaInterfejsuDoWywolaniaZwrotnego>
</metryka>
<powiadomienie xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:ZapisanoDaneUmowy">
<nrZamowienia>Z2017-528-700-701</nrZamowienia>
<zdarzenie>ZAPISANO_DANE_UMOWY</zdarzenie>
<dataRejestracjiZdarzenia>2017-10-25T15:36:23.006</dataRejestracjiZdarzenia>
<dataZmianyStatusu>2017-10-25T14:37:20.857</dataZmianyStatusu>
<typProcesuSprzedazowego>SERVICES_CHANGE</typProcesuSprzedazowego>
<dataWejsciaWZycie>2018-03-28T00:00:00.000</dataWejsciaWZycie>
<kanalRealizacji>APS</kanalRealizacji>
<nrUmowy>U2017-759-557-275</nrUmowy>
</powiadomienie>
</ns2:powiadomOZdarzeniu>
我怎样才能进入选择值?
<nrZamowienia>Z2017-528-700-701</nrZamowienia>
我也喜欢这样尝试
DECLARE @XML xml
set @XML = (select InXML from ServiceBrokerQueueFault where id=29140)
select @XML
select
x.Rec.query('./nrZamowienia').value('.', 'nvarchar(2000)') AS 'NrZamowienia'
FROM @XML.nodes('powiadomOZdarzeniu/powiadomienie')as x(Rec)
但它不起作用。有人可以帮助我吗?我知道有一些例子,但仍然无法得到它并为我的xml写出了良好的路径。
答案 0 :(得分:1)
除了命名空间之外,您的查询是正常的。一种方法是report
:
with xmlnamespaces
另一种方法是; with xmlnamespaces(
'http://cyfrowypolsat.pl/interfejsy/umowy/zamowieniaom/v1/Zdarzenie' as s)
select x.Rec.query('nrZamowienia').value('.', 'nvarchar(2000)') AS 'NrZamowienia'
from @XML.nodes('s:powiadomOZdarzeniu/powiadomienie') as x(Rec)
:
declare namespace