TransWikia.com

asignar valor a variable, con un campo string y los datos de la consulta que contiene el string

Stack Overflow en español Asked by Pedro Carvajal on January 1, 2022

Estoy intentando hacer formatos de HTML dinámicos… el formato ya esta construido, solo se tiene que cambiar la consulta que tiene el formato por el dato de la tabla Compradores.

DECLARE @HTMLFormato VARCHAR(MAX)
SET @HTMLFormato =  (   
                    SELECT  Formato
                    from    Formatos
                            inner join Compradores on 1 = 1 
                    where   FormatoId = 2 and CompradorId = 14
                    )

return @HTMLFormato

El campo Formato contiene: '<p>ingrese su texto aquí...<span>'+ CAST( (TerNombre) AS VARCHAR)+'</span>Texto del formato</p>'

Como si estuviera haciendo el select directamente al string así:

SELECT '<p>ingrese su texto aqui...<span>'+ CAST( (TerNombre) AS VARCHAR)+'</span>Texto del formato</p>'
from    Formatos
inner join Compradores on 1 = 1 
where   FormatoId = 2 and CompradorId = 14

Y me retornaría: '<p>ingrese su texto aqui...<span>'Nombre Comprador'</span>Texto del formato</p>'

Pero me esta retornando el campo Formato como tal, sin sustituir los datos.

One Answer

Dado que lo que tu tienes almacenado en la tabla Formato es un fragmento de consulta SQL, para lograr tu objetivo puedes construir la consulta completa en una variable y ejecutarla dinámicamente con invocando a sp_executesql.

Por ejemplo:

declare @HTMLFormato varchar(max);
declare @SQL nvarchar(max);

select @HTMLFormato = Formato
  from Formatos
 where FormatoId = 2;

set @SQL = 'select ' + @HTMLFormato + ' from Compradores where CompradorID = 14';

exec sp_executesql @SQL;

Si el SQL construido es válido, te daría como resultado:

-------------------------------------------------------------------------------------------
<p>ingrese su texto aquí...<span>Juan Pérez</span>Texto del formato</p>

(1 row affected)

Puedes también invocar a print para ver el contenido de tu consulta antes de ejecutarla:

print @SQL;

A mi me arroja:

select '<p>ingrese su texto aquí...<span>'+ CAST( (TerNombre) AS VARCHAR)+'</span>Texto del formato</p>' from Compradores where CompradorID = 14

Completion time: 2020-07-24T11:21:31.4112583-06:00

Answered by jachguate on January 1, 2022

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP