Agrupando e removendo CDATA em torno de XML

Este é o meu xml. Meu objetivo é agrupar os dados dentro do nó Valor com CDATA em uma exportação e importá-los novamente para uma coluna do tipo Xml com o CDATA removido.

<Custom>
     <Table>Shape</Table>
     <Column>CustomScreen</Column>
     <Value>Data</Value>
<Custom>

No momento, estou substituindo 'Data' dentro do nó Value pelo XML da tabela e acredito que estou colocando o CData em torno dele, onde ShapeInfo é do tipo XML e CustomPanel é o primeiro nó do XML da [ShapeInfo].

SET @OutputXML= replace(@OutputXML, 'Data', CAST((SELECT [ShapeInfo]      
                         FROM [Shape] WHERE [Shape_ID] = @ShapeID) as VARCHAR(MAX))

SET @OutputXML= replace(@OutputXML, '<CustomPanel', '<![CDATA[<CustomPanel')

No entanto, o resultado se parece com algo assim, embora eu esperasse que ele tivesse apenas CDATA em torno das informações:

<Value>&lt;CustomPanel VisibilityIndicator=""&gt;&lText="No" Checked="False" Height="20" Width="50"/&gt;&lt;/Cell&gt;&lt;/Row&gt;&lt;/Table&gt;&lt;/CustomPanel&gt;</Value>

Então eu estou fazendo algum sql dinâmico para atualizar essa coluna

EXEC('UPDATE ['+ @tableName +  '] SET [' + @columnName + '] = ''' + @nodeValue + ''' WHERE Shape_ID = ''' + @ShapeID + '''')

Disseram-me que poderia usar o seguinte para remover o CDATA, mas não o usei.

declare @x xml
set @x=N'<Value>&lt;CustomPanel....... all the current info ...=&quot;&quot;&gt;</Value>'

select @x.value('(/Value)[1]', 'nvarchar(max)')

select '<![CDATA[' + @x.value('(/Value)[1]', 'nvarchar(max)') + ']]'

Depois de verificar a coluna novamente, parece que ela contém as informações corretas. No entanto, nunca mudei de volta para XML do VARCHAR ou removi os símbolos CDATA, mesmo que eles tenham desaparecido quando verifiquei a coluna. Então, o que estou perdendo aqui? Essa é a maneira correta de fazer isso?

questionAnswers(2)

yourAnswerToTheQuestion