viernes, 20 de marzo de 2015

IN con varibles Sql Server

En un procedimiento almacenado queremos hacer una consulta del tipo

Select * from mitabla where id in (@misValores)

Donde @misValores es dinámico. Hacer un concat en @misValores no funciona

Pero tienes dos soluciones :
  • Solución 1 , con una sentencia dinámica


    DECLARE @misValores2 VARCHAR(MAX)
    SET  @misValores2  = '3,4,22,6014'
    DECLARE @sql NVARCHAR(MAX)
    SET    @sql= 'Select * from mitabla where id in (@ ('+@misValores2 +')'
    EXEC sp_executesql @sql


  • Solución 2 , una variable de tipo tabla

    DECLARE @misValores TABLE (ID INT )
    INSERT INTO @misValores VALUES (3) ,(4),(22),(60),(14)
    SELECT * FROM miTabla  WHERE  id  in ( SELECT ID FROM @misValores )

No hay comentarios:

Publicar un comentario