IF en SQL Server
Necesito usar de alguna forma el IF que yo usaría en otro lenguaje.
Tengo un modulo de pedido de materiales para el área de almacenes de una tienda, y como es lógico, no se debería poder pedir más de lo que se tiene de un producto, por decir, si solo tengo 5 planchas en mi almacen, no puedo pedir más de 5.
Tengo un procedimiento almacenado que se debe encargar de todo eso y si es que se pasa la validación 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 más o menos es el siguiente:
Se supone que en la parte que esta con comentarios debería haber algo que permita saber si es que se tiene más 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 dirá 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.
Tengo un modulo de pedido de materiales para el área de almacenes de una tienda, y como es lógico, no se debería poder pedir más de lo que se tiene de un producto, por decir, si solo tengo 5 planchas en mi almacen, no puedo pedir más de 5.
Tengo un procedimiento almacenado que se debe encargar de todo eso y si es que se pasa la validación 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 más o menos es el siguiente:
Se supone que en la parte que esta con comentarios debería haber algo que permita saber si es que se tiene más 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 dirá 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.
Respuesta de iislas
1