Hola, estoy comenzando programar procediumientos almacenados
En particular, uno, para hacer una busqueda, me gustaria que refiera una
seria de paramentros, y si no lo recibe por defecto tienen el valor nulo,
despues si tienen o no el valor nulo influyen o no en la busqueda.
Tambien me gustaria que recibiera un parametro extra, por cada campo
numerico o de fecha, por ejemplo @cantidadModo, siendo modo (-1 menor que la
cantidad indicada, 0 igual, 1 mayor y si es 2, quiere decir que esta entre
dos cantidades) , de manera que no solo buscara numeros exactos
He hehco el siguiente procedimietno
queria saber si la forma que he hecho es la mas correcta, o hay otras formas
(para este problema que imagino es muy comun) de realizar esto
Gracias
CREATE PROCEDURE [dbo].[bancoSelectMovimientos]
@fechaModo int=0,
@fecha datetime=null,
@fecha2 datetime=null,
@tipo char(256)=null,
@concepto char(256)=null,
@notas text=null,
@cantidadModo int=0,
@cantidad money=null,
@cantidad2 money=null,
@banco char(256)=null
AS
declare @select sysname
set @select=''
if (@fecha is not null)
begin
set @select= @select + case @fechaModo
when -1 then 'fecha < ' + @fecha + ' '
when 0 then 'fecha= ' + @fecha + ' '
when 1 then 'fecha > ' + @fecha + ' '
when 2 then 'fecha beetwen ' + @fecha+ ' and ' + @fecha2 + ' '
end
end
if (@cantidad is not null)
begin
set @select= @select + case @cantidadModo
when -1 then 'cantidad < ' + cast(@cantidad as sysname) + ' '
when 0 then 'cantidad=' + cast(@cantidad as sysname) + ' '
when 1 then 'cantidad >' + cast(@cantidad as sysname) + ' '
when 2 then 'cantidad beetwen '+ cast(@cantidad as sysname) +' and ' +
cast(@cantidad2 as sysname) + ' '
end
end
if (@tipo is not null) set @select=@select + 'tipo like %' + @tipo + '% '
if (@concepto is not null) set @select=@select + '@concepto like %' +
@concepto + '% '
if (@notas is not null) set @select=@select + 'notas like %' + CAST(@notas
as sysname) + '% '
if (@banco is not null) set @select=@select + 'banco like %' + @banco + '% '
if (@select='')
set @select='Select * from BancoMovimiento'
else
set @select='Select * from BancoMovimiento where ' + @select
exec (@select)
Leer las respuestas