Avatar billede davidfossil Nybegynder
20. november 2006 - 16:27 Der er 2 kommentarer og
1 løsning

XML modify() på lokal variable

Jeg ønsker at selecte en liste med XML-records fra en Sql Server 2005 database og samle disse til et XML-dokument, ved at smide en ny document node rundt om dem. Jeg tænkte derfor at jeg kunne deklarere en lokal XML variable, løbe igennem mine XML-records med en cursor og så bruge modify() til at fylde indholdet over i det ny XML-dokument.

Er det muligt at bruge modify() metoden på en lokalt deklareret variable? Jeg kan kun finde eksempler hvor den bruges ifm. UPDATE statements, og har endnu ikke haft noget held ved at prøve mig frem.

Alternativt kan jeg banke det hele sammen som en varchar, men ville foretrække at arbejde med min XML som XML og ikke som tekst.
Avatar billede davidfossil Nybegynder
20. november 2006 - 21:59 #1
Uhh, nu lurede jeg den delvist selv:
SET @Report.modify('insert <reply>hej</reply> into /report[1]')

Men hvordan får jeg så et andet XML object ind i stedet for min hardcodede <reply>hej</reply> ? Jeg roder selv videre med projektet nu, men hints modtages gerne :)
Avatar billede davidfossil Nybegynder
20. november 2006 - 22:24 #2
Alle mine søgning og forsøg synes at lede mig frem til den konklusion at man faktisk ikke kan indsætte en XML-variable i en anden. Kan det virkelig passe? I så fald må jeg vel tilbage til at arbejde med en lang streng som jeg til sidst caster til XML - det lyder bare meget mærkeligt at dette skulle være den bedste løsning.

Nogle idéer?
Avatar billede davidfossil Nybegynder
20. november 2006 - 22:40 #3
Wee - nu fandt jeg langt om længe ud af det. I det følgende eksempel både @Report og @Reply lokale variable af XML typen, og målet er at indholdet af @Reply (et enkelt <reply> element) skal lægges ind i mit document element (et <report> element i @Report).

SET @Report = (SELECT @Report, @Reply FOR XML RAW(''), ELEMENTS, TYPE)
SET @Report.modify('insert /reply as last into (/report)[1]')
SET @Report.modify('delete /reply')

Idéen til dette workaround stammer herfra: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=790251&SiteID=1
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester