miércoles, 6 de enero de 2010

Procedimientos Almacenados en PHP y MySQL

Ahora en MySQL, podemos en un Stored Procedure hacer uso de transacciones asegurando asi que realmente se llevará a cabo de forma segura el procedimiento y para esto hacemos uso de @@error_count, el cual siendo 0 significa que no han habido errores (usando un if bajo esta condición podriamos decidir cuando proceder al COMMIT).

En el manual de referencia viene como crear stored procedures, pero simplificando un poco pongon un ejemplo. Lo empezamos con CREATE PROCEDURE sp_nombreDelProcedimiento … luego abrimos un paréntesis para indicar las variables que pueden ser de IN, OUT o INOUT…

Una vez definido esto, definimos entre BEGIN y END las consultas que compondrán al stored procedure. Podemos declarar variables dentro de este stored procedure haciendo uso de DECLARE nombreVariable TipoVariable.

Ejemplo:

CREATE PROCEDURE sp_altaUsuario(IN nick VARCHAR(10) ,
IN correo VARCHAR(35),
IN contrasenia VARCHAR(32), IN estadox TINYINT(3),
IN permisox TINYINT(3))

BEGIN
DECLARE a INTEGER;
INSERT INTO usuario(nickUsuario, correoUsuario,contraseniaUsuario, idEstado, idPermiso)
VALUES(nick, correo, contrasenia, estadox,permiso);
SET a=(SELECT @@error_count);
IF a = 0 THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
END;

Ahora, si queremos llamar a un stored procedure, la consulta sería haciendo uso de CALL sp_nombreDelStoredProcedure(valoresDeEntrada). y en PHP podemos hacerlo de la siguiente manera:

$sql= “CALL sp_ejemplo(”.$parametro1.”);”;

$datos= mysqli_query($conexion, $sql);

Sobre @@error_count -> http://dev.mysql.com/doc/refman/5.0/es/show-errors.html

No hay comentarios:

Publicar un comentario