Store Procedure - Repaso de SQL

From Ibbddunq

Store Procedure

  • Los parametros pueden ser IN,OUT,INOUT
  • Los SP se llaman
    • CALL AreaDeCirculo(22, @a);
    • CALL AreaDeCirculo("Jabon", 50);
CREATE PROCEDURE `AreaDeCirculo` (IN nombreDeProducto varchar(45), IN stock varchar(45))
BEGIN
 insert into producto(nomProd,stock,fecha) values
      (nombreDeProducto, sctock, now());
END  

CREATE PROCEDURE AreaDeCirculo( IN r double, OUT a double)
BEGIN
   SET a = r * r * pi();
END


Funciones

  • Los Parametros son siempre IN
  • Select tieneMasStockQue("Jabon Ala","Jabon Skip");


FUNCTION `tieneMasStockQue` (nombreProducto varchar(45), nombreProducto2 varchar(45))
returns bool
BEGIN
  declare cantidadDeStockProducto1 integer;
  declare cantidadDeStockProducto2 integer;

  select stock from producto where nomProd = nombreProducto into cantidadDeStockProducto1 ;
  select stock from producto where nomProd = nombreProducto2 into cantidadDeStockProducto2 ;

  return  (cantidadDeStockProducto1 >= cantidadDeStockProducto2 );
END  


FUNCTION `insertarValidandoCompra` (nombreDeProducto varchar(45), nombreDeCliente varchar(45),cantidad integer)
returns integer
BEGIN
  declare cantidadDeStockProducto integer;
  select stock from producto where nomProd = nombreProducto into cantidadDeStockProducto;
  if (stock >= cantidad) then
    insert into producto(nomProd,nomCliente,fecha,cant) values
      (nombreDeProducto, nomCliente, now(),stock -cantidad);
    return stock -cantidad;
  else
    insert into producto(nomProd,nomCliente,fecha,cant) values
      (nombreDeProducto, nomCliente, now(),0);
    return stock;
  end if;
END
Personal tools