Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

XML parsen en inlezen met MSSQL

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voor dit topic zomaar wordt geloten, verwijs ik naar naar het vorige topic:
XML parsen en inlezen met MSSQL
Het opzoekwerk is al lang gebeurd, de vage omschrijving komt omdat ik niet wist of er hier mensen zijn die van dat op de hoogte zijn, maar de volledig omschrijving is dan:


We moeten de waarde die we terug krijgen van een sql-statement opvangen en dan verwerken.
Deze query moet dynamisch worden opgebouwd en ons concreet probleem zit bij de @value-variabele. Bij het wegschrijven of tonen van de inhoud van @value krijgen we steeds een null-value.

Dit is een deel van onze procedure, (volledige procedure zit in de bijlage)

SET @SQL = 'convert(NVARCHAR(max),(SELECT @value = tbl.rows.value(''@'+@veldnaam+''', ''NVARCHAR(200)'') FROM @XML.nodes(''/tbl_query'') tbl(rows)))' // @veldnaam moet dus dynamisch zijn.
SET @dynSQL = N'@value NVARCHAR(max) OUTPUT'
EXEC sp_executesql @SQL, @dynSQL, @value = @value OUTPUT

Als we dan uitpluizen wat er in @sql zit krijgen we dit:

convert(NVARCHAR(max)(SELECT @value = tbl.rows.value('@Versie', 'NVARCHAR(200)') FROM @XML.nodes('/tbl_query') tbl(rows)))
convert(NVARCHAR(max)(SELECT @value = tbl.rows.value('@Patch_Level', 'NVARCHAR(200)') FROM @XML.nodes('/tbl_query') tbl(rows)))
 Wat een juiste waarde terug geeft.

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Dat gaat niet op deze manier. Je zult het dan in twee stappen moeten doen. Stap 1 is het creeren van de query. Stap 2 is deze query via een cursor uitvoeren en eventueel via een loop het resultaat verwerken.

Daarbij zou is het voor ons erg prettig als je sql statements in code tags opneemt. Maar wat ik vooral mis is wat je zelf allemaal hebt geprobeert. Welke andere methode dan bovenstaand heb je nog meer geprobeert? Of lukt het na 5 minuten niet en post je hier je probleem?

Daarbij mis ik ook even welke versie van SQL Server je gebruikt en waarom MOET het op de server gedaan worden. Waarom lees je bijvoorbeeld niet het xml fragment in een (System.Xml.)XmlDocument en voer je daarop enkele SelectSingleNode statements uit?

Via String.Format kun je ook zeer eenvoudig de veldnaam 'dynamisch' houden. Dat maakt een en ander ook beter leesbaar.

Los van het feit dat ik niet zit te wachten op een volledige procedure, verwijs je in je topic naar een attachment, maar ik kan zie het niet.

If it isn't broken, fix it until it is..


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 07:40

Creepy

Tactical Espionage Splatterer

Oftewel: whoami had aan je gevraagd de quickstart eens door te lezen. Wil je dat aub doen en je startpost nu aanvullen want zoals Niemand_Anders ook al laat zien willen we graag wat meer informatie terugzien dan dat je nu geeft. Dat laat zien dat je er inderdaad mee bezig bent geweest en omdat je meer informatie geeft kunnen we je beter helpen en voorkom je dat je oplossingen krijgt die niet gaan werken.
Het opzoekwerk is al lang gebeurd,
Prima, maar dat wordt wel vaker geroepen. Wat heb je dan precies uitgezocht en wat lukte daar dan niet mee? Alweer, zie de quickstart.

[ Voor 46% gewijzigd door Creepy op 21-04-2008 17:13 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney