Podemos componer sentencias SQL almacenándolas en cadenas y luego ejecutar bien con EXEC o con sp_executesql. Se aconseja usar este último siempre, ya que permite a SQL Server reutilizar el plan de ejecución de la consulta en vez de generar uno nuevo, ahorrándonos el coste que ello conlleva.
DECLARE @valor int
EXECUTE sp_executesql N'SELECT @ret = COUNT(*) FROM Pedidos_Cli_Lineas WHERE Precio_Euro>@MinPrecio',
N'@MinPrecio int, @ret int OUTPUT', -- definición de variables
@MinPrecio = 10, -- inicializacion de variables
@ret=@valor OUTPUT -- retorno
SELECT @valor
Ejemplo consulta dinámica para sacar coste de articulo:
Declare @IdArticulo T_Id_Articulo='GAT004'
Declare @IdAlmacen T_Id_Almacen=5
Declare @CampoCoste varchar(100)='CosteMedio_EURO'
Declare @coste T_Decimal
Declare @lsql nvarchar(1000)
SET @lsql='SELECT @ret=' + @CampoCoste + ' FROM Articulos_Datos_Ultimos_Alm WHERE IdArticulo=''' + @IdArticulo+ ''' AND IdAlmacen=' + convert(varchar,@IdAlmacen)
EXECUTE sp_executesql @lsql,N'@ret T_Decimal OUTPUT',@ret=@coste output
SELECT @coste
Con la siguiente consulta dinámica podemos saber el coste de un determinado artículo en un determinado almacén y tomando un campo en concreto (pasado por parámetro) de la tabla Articulos_Datos_Ultimos_Alm
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo