pasar procedimiento a funcion
Publicado por Jorge (1 intervención) el 13/04/2010 08:48:35
me gustaria saber como transformar el siguiente procedimiento almacenado de sql server a una funcion que devuelva los datos de una consulta de referencias cruzadas, muchas gracias:
CREATE PROCEDURE GetInformeStock
@fechainicio datetime,
@fechafin datetime,
@lote nvarchar(50),
@producto nvarchar(50),
@almacen nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
select dbo.TipoProducto.Codigo as código, dbo.TipoProducto.Nombre as producto, dbo.RegTrazabilidad.LoteDestino as lote, sum(Convert(decimal(10,2),dbo.RegTrazabilidad.CantDestino+'0')/10) as cantidad , dbo.Almacen.NombreAlmacen as almacen
from dbo.TipoProducto inner join dbo.RegTrazabilidad
on dbo.RegTrazabilidad.IDTipoProductoDestino = dbo.TipoProducto.IDTipoProducto
inner join dbo.Almacen on dbo.RegTrazabilidad.IDAlmacenDestino = dbo.Almacen.IDAlmacen
where convert(datetime, substring(dbo.RegTrazabilidad.Instante,4,2)+'/'+substring(dbo.RegTrazabilidad.Instante,0,3)+'/'+substring(dbo.RegTrazabilidad.Instante,7,2) )>=@fechainicio
and convert(datetime, substring(dbo.RegTrazabilidad.Instante,4,2)+'/'+substring(dbo.RegTrazabilidad.Instante,0,3)+'/'+substring(dbo.RegTrazabilidad.Instante,7,2) ) <= @fechafin
and dbo.RegTrazabilidad.IDTipoProductoDestino=@producto
and dbo.RegTrazabilidad.IDAlmacenDestino=@almacen
and dbo.RegTrazabilidad.LoteDestino=@lote
and dbo.RegTrazabilidad.Auditoria='INSERT'
group by dbo.TipoProducto.Codigo, dbo.TipoProducto.Nombre, dbo.RegTrazabilidad.LoteDestino, dbo.Almacen.NombreAlmacen
union all
select dbo.TipoProducto.Codigo as código, dbo.TipoProducto.Nombre as producto, dbo.RegTrazabilidad.LoteOrigen as lote, sum(Convert(decimal(10,2),dbo.RegTrazabilidad.CantDestino+'0')/10) as cantidad , dbo.Almacen.NombreAlmacen as almacen
from dbo.TipoProducto inner join dbo.RegTrazabilidad
on dbo.RegTrazabilidad.IDTipoProductoOrigen = dbo.TipoProducto.IDTipoProducto
inner join dbo.Almacen on dbo.RegTrazabilidad.IDAlmacenOrigen = dbo.Almacen.IDAlmacen
where convert(datetime, substring(dbo.RegTrazabilidad.Instante,4,2)+'/'+substring(dbo.RegTrazabilidad.Instante,0,3)+'/'+substring(dbo.RegTrazabilidad.Instante,7,2) )>= @fechainicio and convert(datetime, substring(dbo.RegTrazabilidad.Instante,4,2)+'/'+substring(dbo.RegTrazabilidad.Instante,0,3)+'/'+substring(dbo.RegTrazabilidad.Instante,7,2) ) <= @fechafin
and dbo.RegTrazabilidad.IDTipoProductoOrigen=@producto
and dbo.RegTrazabilidad.IDAlmacenOrigen=@almacen
and dbo.RegTrazabilidad.LoteOrigen=@lote
and dbo.RegTrazabilidad.Auditoria='INSERT'
group by dbo.TipoProducto.Codigo, dbo.TipoProducto.Nombre, dbo.RegTrazabilidad.LoteOrigen, dbo.Almacen.NombreAlmacen
order by 1 ;
END
/////////////////
CREATE PROCEDURE GetInformeStock
@fechainicio datetime,
@fechafin datetime,
@lote nvarchar(50),
@producto nvarchar(50),
@almacen nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
select dbo.TipoProducto.Codigo as código, dbo.TipoProducto.Nombre as producto, dbo.RegTrazabilidad.LoteDestino as lote, sum(Convert(decimal(10,2),dbo.RegTrazabilidad.CantDestino+'0')/10) as cantidad , dbo.Almacen.NombreAlmacen as almacen
from dbo.TipoProducto inner join dbo.RegTrazabilidad
on dbo.RegTrazabilidad.IDTipoProductoDestino = dbo.TipoProducto.IDTipoProducto
inner join dbo.Almacen on dbo.RegTrazabilidad.IDAlmacenDestino = dbo.Almacen.IDAlmacen
where convert(datetime, substring(dbo.RegTrazabilidad.Instante,4,2)+'/'+substring(dbo.RegTrazabilidad.Instante,0,3)+'/'+substring(dbo.RegTrazabilidad.Instante,7,2) )>=@fechainicio
and convert(datetime, substring(dbo.RegTrazabilidad.Instante,4,2)+'/'+substring(dbo.RegTrazabilidad.Instante,0,3)+'/'+substring(dbo.RegTrazabilidad.Instante,7,2) ) <= @fechafin
and dbo.RegTrazabilidad.IDTipoProductoDestino=@producto
and dbo.RegTrazabilidad.IDAlmacenDestino=@almacen
and dbo.RegTrazabilidad.LoteDestino=@lote
and dbo.RegTrazabilidad.Auditoria='INSERT'
group by dbo.TipoProducto.Codigo, dbo.TipoProducto.Nombre, dbo.RegTrazabilidad.LoteDestino, dbo.Almacen.NombreAlmacen
union all
select dbo.TipoProducto.Codigo as código, dbo.TipoProducto.Nombre as producto, dbo.RegTrazabilidad.LoteOrigen as lote, sum(Convert(decimal(10,2),dbo.RegTrazabilidad.CantDestino+'0')/10) as cantidad , dbo.Almacen.NombreAlmacen as almacen
from dbo.TipoProducto inner join dbo.RegTrazabilidad
on dbo.RegTrazabilidad.IDTipoProductoOrigen = dbo.TipoProducto.IDTipoProducto
inner join dbo.Almacen on dbo.RegTrazabilidad.IDAlmacenOrigen = dbo.Almacen.IDAlmacen
where convert(datetime, substring(dbo.RegTrazabilidad.Instante,4,2)+'/'+substring(dbo.RegTrazabilidad.Instante,0,3)+'/'+substring(dbo.RegTrazabilidad.Instante,7,2) )>= @fechainicio and convert(datetime, substring(dbo.RegTrazabilidad.Instante,4,2)+'/'+substring(dbo.RegTrazabilidad.Instante,0,3)+'/'+substring(dbo.RegTrazabilidad.Instante,7,2) ) <= @fechafin
and dbo.RegTrazabilidad.IDTipoProductoOrigen=@producto
and dbo.RegTrazabilidad.IDAlmacenOrigen=@almacen
and dbo.RegTrazabilidad.LoteOrigen=@lote
and dbo.RegTrazabilidad.Auditoria='INSERT'
group by dbo.TipoProducto.Codigo, dbo.TipoProducto.Nombre, dbo.RegTrazabilidad.LoteOrigen, dbo.Almacen.NombreAlmacen
order by 1 ;
END
/////////////////
Valora esta pregunta


0