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.
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.