سؤال

ولدي بيان 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top