我正在处理一个应用程序,该应用程序从我们的数据库获取数据,并在生成的查询结尾使用FOR XML AUTO,ELEMENTS输出xml文件,然后输出XSLT以我们想要的方式改变它。然而,在我们使用sql标量函数生成某些数据的特定情况下,它总是将该元素放入与已存在的表节点名称相同的子表节点中(所以说它是表xyz,它会是print("<xyz><node1></node1><xyz><generated-node-from-function></generated-node-from-function></xyz>");
SQL Server和xml自动生成元素
无论我尝试什么(甚至直接操纵应用程序生成的sql副本),它似乎总是会创建这个额外的节点层,这会在以后导致出现问题,当我们尝试处理此xml以提取数据有没有什么特殊的属性会导致sql server中的xml生成器以这种方式工作,并且有什么方法可以阻止它,所以我可以将生成的数据节点保留在与其关联的表的其余数据相同的级别上与?
编辑:重命名索引列/表在索姆电子病例,但其他应该是相同的SQL。
SELECT * FROM (SELECT column1,column2,column3,iduser,jstart,jstop,jbatchperiod,jinactive,processed,column4,lock,column5,batchticketmicr,machineid,sjobopex,szopexrefid,jreceived,jstartopex,jstopopex,idspecialmicr,idp2batchoriginal,stateflags,bcrossrefid,bidentifier1,bidentifier2,bidentifier3,bidentifier4,bidentifier5,idexport,idimport,rsahash FROM table1) table1
LEFT JOIN (SELECT column21,ienvelope,isort,column1,idtemplate,processed,column4,lock,envelopetypecode,szqueuesvisitedunique,exportdate,jcompleted,status,ipriority,idbankaccount,iprioritybeforerzbump,fstoredrecondata,cscountyid,column10,column11,checkbox1,checkbox2,column12,column13,column14,xxxempfein,column15,column16,originalenvelopeid,column17,column18,xxxoag,trackingnumber,csldc,ecrossrefid,postmark,routingflags,eidentifier1,eidentifier2,eidentifier3,eidentifier4,eidentifier5,idexport FROM envelope) envelope ON table1.column1=Envelope.column1
LEFT JOIN (SELECT column21,column22,isort,column23,processed,side,pagetypecode,rawmicrline,rawscanline,rawbarcode,exportid,szlocandconf,szlocandconfpagefields,idformtemplate,szparms,rawmarksense,audittrail,audittrailelectronic,pixheight,pixwidth,ocrattemptcounter,idspecialmicr,idpageexception,pagemodifierflags,column10,csldc,rejectdate,rejectuser,rejectqueue,fsupervisorreject,xxxempno,xxxtraceno,xxxemplcnt,checkbox1,keyword,templatealtered,templateflags,pidentifier1,pidentifier2,pidentifier3,pidentifier4,pidentifier5,isscanlinevalid,idexport,clickcount FROM Table2) Table2 ON Envelope.column21=Page.column21
LEFT JOIN (select column22, column21, dbo.Fileimagepath(column21, column22) as path from Table2) Fileimg ON Table2.column21=FileImg.column21 AND Table2.column22=FileImg.column22
WHERE Envelope.column21 = 8
FOR XML AUTO, ELEMENTS
另一个编辑:基本上FileImg的成绩越来越裹在里面现有的表2标签与数据的其余部分额外的一套表2标签。
另一个编辑︰测试对另一个数据库与相同的SQL它正常工作,它似乎有一个坏的设置在我的数据库或存储的过程不同去调查更远。
如果不工作,我会尝试上面的一些其他的建议,感谢您的帮助迄今为止:)
您能否提供SQL语句,这样会更清楚。谢谢。而且:在你的问题中,XML是否是确切的XML?是否有一些缺失标签?你能检查一下吗? – splattne 2008-11-05 15:28:13
当然,给我一秒来清理和取消它的业务。 – Runevault 2008-11-05 15:35:30