Я хотел бы выбрать эту строку из моего XML:
<komentarz>Nieprawidłowy parametr - IdTabeliRekorduZrodlowego</komentarz>
Мой код и XML выглядят так:
DECLARE @XML XML DECLARE @NRZAM VARCHAR(4000) SET @XML = ' <tns:powiadom xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne"> <nazwaKwalifikowanaInterfejsuWywolywanego xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne">{http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie}zarejestrujStanZgodyAsync</nazwaKwalifikowanaInterfejsuWywolywanego> <odpowiedz xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne" xsi:type="ns3:OdpowiedzZgod"> <uid>EEE5A475-ECF5-4DBD-AB4E-7AB6442A4D6D</uid> <status>BLAD</status> <stanZgodyStatus xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne"> <idPoziomy>4</idPoziomy> <idReferencji>114601901</idReferencji> <idTypyZgod>1110</idTypyZgod> <kodBledu>14</kodBledu> <komentarz>Nieprawidłowy parametr - IdTabeliRekorduZrodlowego</komentarz> </stanZgodyStatus> <stanZgodyStatus xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne"> <idPoziomy>4</idPoziomy> <idReferencji>114601901</idReferencji> <idTypyZgod>1092</idTypyZgod> <kodBledu>14</kodBledu> <komentarz>Nieprawidłowy parametr - IdTabeliRekorduZrodlowego</komentarz> </stanZgodyStatus> </odpowiedz> <odpowiedz xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne" xsi:type="ns3:OdpowiedzZgod"> <uid>EEE5A475-ECF5-4DBD-AB4E-7AB6442A4D6D</uid> <status>BLAD</status> <stanZgodyStatus xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne"> <idPoziomy>4</idPoziomy> <idReferencji>114601901</idReferencji> <idTypyZgod>1110</idTypyZgod> <kodBledu>14</kodBledu> <komentarz>Nieprawidłowy parametr - IdTabeliRekorduZrodlowego</komentarz> </stanZgodyStatus> <stanZgodyStatus xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne"> <idPoziomy>4</idPoziomy> <idReferencji>114601901</idReferencji> <idTypyZgod>1092</idTypyZgod> <kodBledu>14</kodBledu> <komentarz>Nieprawidłowy parametr - IdTabeliRekorduZrodlowego</komentarz> </stanZgodyStatus> </odpowiedz> <metryka xmlns:ns3="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne"> <uzytkownik>sa</uzytkownik> <system>SUZ</system> <data>2018-12-17T10:38:12.880</data> <uid>811ED2F9-1A71-4F9F-B858-A8EE256F6604</uid> </metryka> </tns:powiadom> ' SET @NRZAM = ( SELECT TOP 1 x.Rec.query('komentarz').value('.','nvarchar(2000)') AS 'komentarz' FROM @XML.nodes('declare namespace s="http://cyfrowypolsat.pl/interfejsy/zgody/v4/zgodyKlienckie"; s:powiadom/odpowiedz/stanZgodyStatus') AS x(Rec) ) SELECT @XML SELECT @NRZAM
Мой @NRZAM все еще равен нулю, но это будет«Nieprawidłowy параметр - IdTabeliRekorduZrodlowego».Что я делаю не так?
@NRZAM
Вы используете неправильное пространство имен.Используйте пространство имен для :tns примерно так:
:tns
SELECT x.Rec.query('komentarz').value('.','nvarchar(2000)') AS 'komentarz' FROM @XML.nodes('declare namespace s="http://cyfrowypolsat.pl/uslugi/powiadomienia/v2/PowiadomieniaZwrotne"; s:powiadom/odpowiedz/stanZgodyStatus' ) AS x(Rec)