martes, 13 de febrero de 2007

MySQL 5.0 en MacOSX

El paquete para MacOSX lo encontre aquí: MySQL 5.0, actualmente tengo instalado Apache 2.0 con PHP 4 y Mysql 4 corriendo en una PowerPc G4 y todo ha ido de maravilla, todo el paquete se puede conseguir en Server Logistics en forma gratuita y su configuración es sumamente sencilla. Ahora toca instalar MySQL 5 para poder invocar Stored Procedures con Java.

Para crear un procedimiento almacenado desde mysql:



mysql> delimiter // (para cambiar ";" por "//")

mysql> CREATE PROCEDURE p (out p int)
-> BEGIN
-> SELECT COUNT(*) INTO p FROM muestra; <- esta tabla existe en la BD -> END//

mysql> delimiter ;

**********************************************************************************
Para crear un Stored Procedure un poco más útil:

mysql> DELIMITER //

mysql> CREATE PROCEDURE inserta(p int(1))
-> BEGIN
-> SET @id = p;
-> SET @muestra = HEX(p);
-> CREATE TABLE muestras(id int(1), muestra varchar(10));
-> INSERT INTO muestras(id, muestra) VALUE(@id, @muestra);
-> END//

Query OK, 0 rows affected (0.00 sec)

mysql> DELIMITER ;
mysql> CALL inserta(1);

Query OK, 1 row affected (0.05 sec)

mysql> SELECT * FROM muestras;
+------+---------+
| id | muestra |
+------+---------+
| 1 | 1 |
+------+---------+
1 row in set (0.00 sec)

Manejo de excepciones con Stored Procedures

mysql-> CREATE PROCEDURE creatabla_m()
BEGIN
DECLARE error_tabla CONDITION FOR SQLSTATE '42S01';
DECLARE CONTINUE HANDLER FOR error_tabla
BEGIN
SELECT 'La tabla muestras ya existe, esta se volvera a crear';
DROP TABLE muestras;
CREATE TABLE muestras(id int(1), muestra varchar(10));
END;
BEGIN
CREATE TABLE muestras(id int(1), muestra varchar(10));

END;
INSERT INTO muestras (id, muestra) VALUES (1, 'nuevo');
END//

No hay comentarios: