SQL Server - IN Dinamico

 
Vista:

IN Dinamico

Publicado por Julio César Briceño Rondón (2 intervenciones) el 23/04/2010 05:31:57
Saludos,

Tengo una aplicación que envía a un procedure un parametro varchar(8000) con
unos ids para consultar en una tabla

El procedure en la tabla descompone los campos lo mete en una tabla temporal
y hace una subconsulta, algo así

declare a varchar(8000)
select a = '1,2,3,4'

luego crea una tabla temporal que contendría algo como

valor
1
2
3
4

Para hacer un:

select * from tabla where id in(select valor from #tempo)

Pregunta.....

Habrá forma de construir el sql dinámico con la propia variable...

Algo como

select * from tabla where id in(variablequevieneviaparametro)

???

Mucho agradecería la ayuda,

Julio C. Briceño R.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:IN Dinamico

Publicado por Julio César Briceño Rondón (2 intervenciones) el 23/04/2010 05:46:41
Me respondo yo mismo ya lo vi.

declare @expalum as varchar(800)
select @expalum = '03744, 02725, 08119, 02725'
declare @sql varchar(800)
set @sql = 'select * from alumnos where expalum in(' + @expalum + ')'
exec (@sql)

Para quien le pueda servir,

Gracias,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

RE:IN Dinamico

Publicado por Isaias (4558 intervenciones) el 23/04/2010 19:52:12
Debes cambiar tu:

EXEC (@SQL)

Por:

execute sp_executesql @SQL

Debiendo declarar tu variable como NVARCHAR

Por otro lado, debes saber que ejecutar query dinamico, sube la probabilidad de INYECCION DE CODIGO y que la ejecucion, sera mucho mas lenta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar