Προσπαθώ να διαβάσω ένα xml data type και να φέρω το περιεχόμενο του με nodes.
Όποιος μπορεί να βοηθήσει τον ευχαριστώ προκαταβολικάCREATE TABLE #Xml ( Data XML )
DECLARE @Data XML
set @Data=N'
<resultset>
<row>
<column name="PieceNo">1</column>
<column name="PieceNoEvalUnit">655360</column>
<column name="PieceIdent">Function check1</column>
<column name="RequestNo">1</column>
</row>
<row>
<column name="PieceNo">2</column>
<column name="PieceNoEvalUnit">655362</column>
<column name="PieceIdent">Function check2</column>
<column name="RequestNo">1</column>
</row>
<row>
<column name="PieceNo">3</column>
<column name="PieceNoEvalUnit">655364</column>
<column name="PieceIdent">Function check3</column>
<column name="RequestNo">1</column>
</row>
</resultset>'
INSERT INTO #Xml( Data)
values(@data)
--Επιστρέφει σωστά τα values για την πρώτη εγγραφή
select
data.value('(resultset/row/column/text())[1]', 'int') as PieceNo,
data.value('(resultset/row/column/text())[2]', 'int') as PieceNoEvalUnit,
data.value('(resultset/row/column/text())[3]', 'varchar(255)') as PieceIdent,
data.value('(resultset/row/column/text())[4]', 'int') as RequestNo
from
#Xml
--Όταν όμως ζητάω να επιστρέψει όλες τις εγγραφές μου τις εμφανίζει με NUll.
select
X.N.value('(resultset/row/column/text())[1]', 'int') as PieceNo,
X.N.value('(resultset/row/column/text())[2]', 'int') as PieceNoEvalUnit,
X.N.value('(resultset/row/column/text())[3]', 'varchar(255)') as PieceIdent,
X.N.value('(resultset/row/column/text())[4]', 'int') as RequestNo
from
#Xml as T
cross apply t.Data.nodes(N'/resultset/row') as X(N)
DROP TABLE #Xml