I have a table which includes an XML column and I'm trying to fetch certain columns from the XML data. Those columns are under the PositionRoles
tag which is part of an has INSERT
statement. Unfortunately, I'm getting NULL
values.
Here is the XML example I used:
<request-broker-message version="1.0">
<request class="UPDATE_ORGANISATION_HIERARCHY" culture="tr-TR">
<parameter name="OrgHierarchyDatasets_schema">
(here is not important...)
</parameter>
<parameter name="OrgHierarchyDatasets_diffgram">
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet>
<PositionRoles diffgr:id="PositionRoles1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<POSTN_ID>0000-0000H1-POS</POSTN_ID>
<ROLE_ID>0000-00002B-ROL</ROLE_ID>
<STATUS>1</STATUS>
</PositionRoles>
</NewDataSet>
</diffgr:diffgram>
</parameter>
<parameter name="ExistNodeCheck" type="System.Boolean">True</parameter>
</request>
</request-broker-message>
And my attempt:
;WITH XMLNAMESPACES('urn:schemas-microsoft-com:xml-diffgram-v1' AS diffgr,
'inserted' AS hasChanges)
INSERT INTO TMP_ORGANIZATION_HIERARCHY_LOGS_TABLE(POSITION_ID, OPERATION, ROLE_ID, PACKET_OWNER, RESPONSE_TIME)
SELECT
*
FROM TMP_PACKET_LOG_TABLE (NOLOCK)
WHERE
RESPONSE_PACKET.value('(/request-broker-message/request/parameter[@name="OrgHierarchyDatasets_diffgram"]//NewDataSet/hasChanges:PositionRoles/hasChanges:STATUS)[1]', 'varchar(1)') = '1'