FoxPress – Junio 2006

 

Cursores en MySQL

http://www.fpress.com/

 

Por la Redacción de FoxPress                     
 

En este breve artículo se comenta la forma de usar SQL para crear tablas temporales  (cursores) rellenarlos con algunos datos y destruir la tabla al final de la sesión.

Es necesario recordar que las tablas temporales solo existen mientras la sesión está viva . Si se corre este código en un script de PHP, la tabla temporal se destruirá automáticamente cuando la página acabe de ejecutarse. Si estás conectado a MySQl database server desde el cliente de MySQL (mysql), la tabla temporal existirá sólo hasta que cierres el cliente manualmente o destruyas la tabla.

Nota que puedes especificar un motor de almacenamiento para una tabla temporal. Si no especificas MEMORY (como se muestra a continuación), la tabla se guardará por defecto en el disco.

También nota el uso de los alias de tabla en la instrucción SELECT de cara a facilitar  a la vez claridad y brevedad al mismo tiempo:

 

*- Creamos el cursor

 

CREATE TEMPORARY TABLE SalesSummary (
    product_name VARCHAR(50) NOT NULL
    , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
    , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
    , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
) ENGINE=MEMORY;
 
   *- Introducimos datos en el cursor
 
INSERT INTO SalesSummary
(product_name, total_sales, avg_unit_price, total_units_sold)
SELECT 
    p.name
    , SUM(oi.sales_amount)
    , AVG(oi.unit_price)
    , SUM(oi.quantity_sold)
FROM OrderItems oi
    INNER JOIN Products p
        ON oi.product_id = p.product_id
GROUP BY p.name;
 
 
*- Leemos el cursor
 
SELECT * FROM SalesSummary;
 /* OK, obtenemos el producto más vendido */
SELECT product_name AS "Top Seller"
FROM SalesSummary
ORDER BY total_sales DESC
LIMIT 1;
 
/* Explicitamente se borra la tabla*/
DROP TABLE SalesSummary;  
 

 

 

FoxPress – Junio de 2006

© 2006 FoxPress. All rights reserved