MS SQL للأكس السؤال مسار يتصل بالعنصر كسباث
-
08-07-2019 - |
سؤال
ولدي بيان TSQL التالية:
select
tblName "TblName",
structure "TblName/STRUCTURE",
sqlRetrieve "TblName/SQLRETRIEVE",
Identifier "TblName/IDENTIFIER",
'2' "TblName/OBJECTTYPE"
from
configTable
for xml path ('')
والذي النواتج:
<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>
ولكن أريد أن يكون هذا الناتج (اسم العنصر:
<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>
لا أحد يعرف كيفية تحقيق ذلك مع T-SQL؟
وبفضل
دانيال
المحلول
وأنا لا أعتقد أنك سوف تكون قادرة على تحقيق ذلك مع T-SQL، للأسف.
والأقرب هل يمكن أن تحصل عليه هو هذا:
<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>
وإذا كنت التكيف الاستعلام الخاص بك لتكون:
select
tblName '@Name',
structure "TblName/STRUCTURE",
sqlRetrieve "TblName/SQLRETRIEVE",
Identifier "TblName/IDENTIFIER",
'2' "TblName/OBJECTTYPE"
from
configTable
for xml path ('TABLE')
وآسف لأنني لا يمكن أن يكون من مزيد من المساعدة هنا - اعتقد ان هذا ميزة مايكروسوفت قد لا يعتبر حقا (حتى الآن)! :-)
ومارك
نصائح أخرى
إذا كان لديك أي سيطرة على هيكل XML أتوسل إليك ألا تفعل ما تحاول القيام به. لقد شغلت في وثائق XML حيث تغيير أسماء عنصر XML استنادا إلى بيانات وإنه لأمر فظيع للعمل مع. البيانات كسباث من الصعب، XSLT يكاد يكون من المستحيل.
هل ما يشير marc_s، عليك أن أشكر له في وقت لاحق.
إذا كان لديك أي سيطرة على الهيكل ثم لديك التعازي.
إذا فهمت بشكل صحيح - تريد عنصر جذر واحد بدلا من وجود العديد من الجذور الرئيسية
استخدم:
select tblName '@Name', structure "TblName/STRUCTURE", sqlRetrieve "TblName/SQLRETRIEVE", Identifier "TblName/IDENTIFIER", '2' "TblName/OBJECTTYPE"from configTable for xml path (''), root('TABLE'), type