Cita:
Iniciado por foo seguramente no buscas bien
, aqui un ejemplo basado en la
documentacion
declare @foo xml
set @foo = '<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>'
-- Reemplazar el valor del atributo 'lang' del nodo 'title'
set @foo.modify ('
replace value of (/bookstore/book/title/@lang)[1]
with "test" ')
select @foo
HOla de nuevo foo
Estaba trabajando con esto de la actualizacion del xml y la funcion modify solo me permite utilizar cadenas de caracteres pero no me permite concatenar. En tu ejemplo reemplazas el atributo del nodo @lang con la palabra 'test'. Pero que pasa si yo lo quiero reemplazar con el valor de algúna variable, no me deja concatenar!
Estoy tratando de hacer esto:
Código:
declare @XmlCierraOrdenIngreso as xml
declare @VL_IdEmpresa as int
set @VL_IdEmpresa=99
set @XmlCierraOrdenIngreso='<?xml version="1.0" encoding="iso-8859-1"?><Usuario><ResultSet><Cabecera IdEmpresa="" IdOficina="" NumDocumento="" OrigenDocumentoInv="1"/><Detalle><Items IdDocumento="8"/><Items IdDocumento="7"/></Detalle></ResultSet></Usuario>'
SELECT @XmlCierraOrdenIngreso
SET @XmlCierraOrdenIngreso.modify('replace value of (/Usuario/ResultSet/Cabecera/@IdEmpresa)[1] with "' + convert(varchar(max),@VL_IdEmpresa) + '"')
--SET @XmlCierraOrdenIngreso.modify('replace value of (/Usuario/ResultSet/Cabecera/@IdEmpresa)[1] with "96"')
SELECT @XmlCierraOrdenIngreso
Y me sale el siguiente error en la linea en negrita:
The argument 1 of the xml data type method "modify" must be a string literal.
Creo estar concatenando dos cosas string.
Y si comento aquella linea y utilizo la linea siguiente, utilizando el valor 96 si funciona, si solo funciona así no tiene chiste
Alguna ayudita