Funciones tipo tabla en línea:

 

CREATE FUNCTION [dbo].[funSeRequiereLotes](@IdArticulo T_Id_Articulo, @IdAlmacen T_Id_Almacen)
RETURNS TABLE AS
RETURN
SELECT TOP 1 CAST(SUB.L AS BIT) ConLotes
FROM (
SELECT COUNT(IdAlmacen) L FROM Almacenes WHERE IdAlmacen=@IdAlmacen AND Lotes=1
UNION
SELECT COUNT(IdArticulo) L FROM Articulos WHERE IdArticulo=@IdArticulo AND Lotes=1
) SUB
ORDER BY SUB.L
go
--llamada
SELECT * FROM dbo.funSeRequiereLotes (‘pintura’,0)
Go
-- llamada
SELECT L.IdPedido,L.IdLinea,F.ConLotes FROM Pedidos_Cli_Lineas L CROSS APPLY dbo.funSeRequiereLotes(L.IdArticulo, L.IdAlmacen) F