read xml datatype with nodes

Συζητήσεις για τον Microsoft SQL Server

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
dionisis71
Δημοσιεύσεις: 237
Εγγραφή: 04 Μάιος 2009 22:15
Επικοινωνία:

read xml datatype with nodes

Δημοσίευση από dionisis71 » 10 Ιούλ 2014 09:50

Καλημέρα παιδιά..

Προσπαθώ να διαβάσω ένα 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
Όποιος μπορεί να βοηθήσει τον ευχαριστώ προκαταβολικά

Άβαταρ μέλους
dionisis71
Δημοσιεύσεις: 237
Εγγραφή: 04 Μάιος 2009 22:15
Επικοινωνία:

read xml datatype with nodes

Δημοσίευση από dionisis71 » 10 Ιούλ 2014 10:14

Οκ το βρήκα παιδιά..

ευχαριστώ

πρέπει να γραφτεί έτσι..

select
X.N.value('(column/text())[1]', 'int') as PieceNo,
X.N.value('(column/text())[2]', 'int') as PieceNoEvalUnit
from
#Xml as T
cross apply t.Data.nodes(N'/resultset/row') as X(N)

Απάντηση

Επιστροφή στο “MS SQL Server”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης