Store Procedure - Repaso de SQL

From Ibbddunq

(Difference between revisions)
Line 1: Line 1:
-
CREATE PROCEDURE `insertarValores` (nombreDeProducto varchar(45), stock varchar(45))
+
* 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
  BEGIN
   insert into producto(nomProd,stock,fecha) values
   insert into producto(nomProd,stock,fecha) values
Line 5: Line 10:
  END   
  END   
   
   
 +
 +
CREATE PROCEDURE AreaDeCirculo( IN r double, OUT a double)
 +
BEGIN
 +
    SET a = r * r * pi();
 +
END
 +
 +
 +
*Los Parametros son siempre IN
 +
* Select tieneMasStockQue("Jabon Ala","Jabon Skip");

Revision as of 20:41, 23 October 2009

  • 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


  • 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