neljapäev, 1. oktoober 2009

XML välja sisu ilusaks ajamine peale sql:variable-ga mudimist

Selline juhtum, kui on vaja SQL SERVER-i XML muutujat vahepeal muuta no näiteks
DECLARE @aop XML, @lep INT, @relcon NVARCHAR(2000)

SET @relcon=''+CAST(@contractId AS NVARCHAR(20))+''

SET @lep = @aop.value('/RELATED_CONTRACT[1]', 'INT')
IF @lep IS NULL --KUI RELATED_CONTRACT on puudu, lisame vastava NODE
SET @aop.modify('insert text{sql:variable("@relcon")} as last into (/Options)[1]')

kui nüüd SQL SERVER manageriga seda @aop sisu vaadata on seal '<' asemel
mis ei ole üldsegi ilus, et see asi korda saada tuleb stringitöötlust teha, XML muutuja pöörata NVARCHAR(MAX), muuta ära ja pöörata XML-iks tagasi


Kui tahad XML välja RAISERRORIGA ekraanile lasta, siis tuleb samuti stringitöötlust teha

SET @relcon = REPLACE(CAST(@aop AS NVARCHAR(4000)),'<','_')
RAISERROR('XML info %s',16,1,@relcon)

ASP.NET tõlgendab ju '<' algavaid asju kui HTML-i elemente mis tegelikult ongi õige