MS SQL für XML-Pfad Frage zu XPath-Element
-
08-07-2019 - |
Frage
Ich habe folgende TSQL Anweisung:
select
tblName "TblName",
structure "TblName/STRUCTURE",
sqlRetrieve "TblName/SQLRETRIEVE",
Identifier "TblName/IDENTIFIER",
'2' "TblName/OBJECTTYPE"
from
configTable
for xml path ('')
, welche Ausgänge:
<TblName>PD_CODE_PRODUCTS
<STRUCTURE>PD_CODE_PRODUCTS</STRUCTURE>
<SQLRETRIEVE>BATCHSP</SQLRETRIEVE>
<IDENTIFIER>DATA_OWNER</IDENTIFIER>
<OBJECTTYPE>2</OBJECTTYPE>
</TblName>
<TblName>PD_two
<STRUCTURE>PD_CODE_PRODUCTS</STRUCTURE>
<SQLRETRIEVE>BATCHSP</SQLRETRIEVE>
<IDENTIFIER>DATA_OWNER</IDENTIFIER>
<OBJECTTYPE>2</OBJECTTYPE>
</TblName>
, aber ich mag diese Ausgabe haben (der Elementname:
<PD_CODE_PRODUCTS>
<STRUCTURE>PD_CODE_PRODUCTS</STRUCTURE>
<SQLRETRIEVE>BATCHSP</SQLRETRIEVE>
<IDENTIFIER>DATA_OWNER</IDENTIFIER>
<OBJECTTYPE>2</OBJECTTYPE>
</PD_CODE_PRODUCTS>
<PD_two>
<STRUCTURE>PD_CODE_PRODUCTS</STRUCTURE>
<SQLRETRIEVE>BATCHSP</SQLRETRIEVE>
<IDENTIFIER>DATA_OWNER</IDENTIFIER>
<OBJECTTYPE>2</OBJECTTYPE>
</PD_two>
Weiß jemand, wie dies zu erreichen, mit T-SQL?
Danke
Daniel
Lösung
Ich glaube nicht, Sie in der Lage sein werden dies mit T-SQL zu erreichen, leider.
Die nächstgelegene Sie bekommen können, ist dies:
<TABLE Name="PD_CODE_PRODUCTS">
<TblName>
<STRUCTURE>PD_CODE_PRODUCTS</STRUCTURE>
<SQLRETRIEVE>BATCHSP</SQLRETRIEVE>
<IDENTIFIER>DATA_OWNER</IDENTIFIER>
<OBJECTTYPE>2</OBJECTTYPE>
</TblName>
</TABLE>
<TABLE Name="PD two">
<TblName>
<STRUCTURE>PD_CODE_PRODUCTS</STRUCTURE>
<SQLRETRIEVE>BATCHSP</SQLRETRIEVE>
<IDENTIFIER>DATA_OWNER</IDENTIFIER>
<OBJECTTYPE>2</OBJECTTYPE>
</TblName>
</TABLE>
Wenn Sie Ihre Abfrage anpassen sein:
select
tblName '@Name',
structure "TblName/STRUCTURE",
sqlRetrieve "TblName/SQLRETRIEVE",
Identifier "TblName/IDENTIFIER",
'2' "TblName/OBJECTTYPE"
from
configTable
for xml path ('TABLE')
Leider kann ich hier nicht mehr helfen - denk, das ist ein Feature von Microsoft nicht wirklich in Betracht gezogen hat (bisher)! :-)
Marc
Andere Tipps
Wenn Sie keine Kontrolle über die XML-Struktur Ich bitte Sie nicht zu tun, was Sie zu tun versuchen. Ich habe in XML-Dokumente laufen, wo die XML-Elementnamen auf Datenänderung basiert, und es ist schrecklich zu arbeiten. XPath-Anweisungen sind hart, XSLT ist fast unmöglich.
Sie was marc_s schon sagt, Sie werden ihn später danken.
Wenn Sie keine Kontrolle über die Struktur haben, dann haben Sie meine Sympathien.
Wenn ich Sie richtig verstanden -. Sie wollen ein Root-Element stattdessen viele Hauptwurzeln von
Verwendung:
select tblName '@Name', structure "TblName/STRUCTURE", sqlRetrieve "TblName/SQLRETRIEVE", Identifier "TblName/IDENTIFIER", '2' "TblName/OBJECTTYPE"from configTable for xml path (''), root('TABLE'), type