|
Hola, espero que puedas ayudarme, necesito usar de alguna forma el IF que yo usaria en otro lenguaje.
Tengo un modulo de pedido de materiales para el area de almacenes de una tienda, y como es logico, no se deberia poder pedir mas de lo que se tiene de un producto, por decir, si solo tengo 5 planchas en mi almacen, no puedo pedir mas de 5.
Tengo un procedimiento almacenado que se debe encargar de todo eso y si es que se pasa la validacion insertar datos en una tabla de detalles y actualizar el valor que se tiene en el almacen, en este caso, restar lo que se tenia antes menos lo que se ha pedido.
El procedimiento mas o menos es el siguiente:
Se supone que en la parte que esta con comentarios deberia haber algo que permita saber si es que se tiene mas de lo que se esta pidiendo:
create procedure sp_addDetalleRequerimiento
@idRequerimiento bigint,@cantidad int,@producto varchar(120),
@mensaje varchar(10) output
as
declare @idDetalle bigint
declare @idProd bigint
declare @costo real
declare @cantidadReal int
set @idDetalle=(select count(*)from detallerequerimientos)+1
set @idProd=(select idProducto from productos where nombre=@producto)
set @costo=(select costoUnitario from productos where idProducto=@idProd)
set @cantidadReal=(select cantidadStock from productos where idProd=@idProd)
/*Se Supone que en esta parte se deberia hacer la validacion, deberia ser algo como::
set @mensaje='Error'
if @cantidad>=@cantidad real then --Busco como hacer esto
insert into detalleRequerimientos
values(@idDetalle,@idRequerimiento,@costo,@cantidad,@idMaterial,'INCONCLUSO')
Update Productos
set cantidadStock=cantidadStock - @cantidad where idProducto=@idProd
set mensaje='OK'
end if
go
Lo que quiero hacer mediante este procedimiento es manejar toda la parte de validaciones desde el servidor de datos, la variable @mensaje es una variable de tipo output que me dira si se ha realizado correctamente el pedido del producto una ves que se inserten los valores en la tabla de requerimientos o pedidos y se actualize el stock de la tabla productos. Cabe resaltar que necesito usar los Operadores Mayor, Mayo o igual, menor, menor o igual, por eso es que no he podido hacerlo con el select case adeas no es solo un select, es un SP que luego tiene que insertar y actualizar datos.
Gracias
Espero tu respuesta
|