Documente Academic
Documente Profesional
Documente Cultură
TABLE IF EXISTS actor; CREATE TABLE actor ( id INT NOT NULL AUTO_INCREMENT, nombre VARCHAR(64) NOT NULL, apellidos VARCHAR(64) NOT NULL, imdb VARCHAR(32) NOT NULL DEFAULT '', PRIMARY KEY(id) ) ENGINE = InnoDB; Registro de prueba: USE videoteca; INSERT INTO actor(nombre, apellidos, imdb) VALUES('Harrison', 'Ford', 'nm0000148'); INSERT INTO actor(nombre, apellidos, imdb) VALUES('Russell', 'Crowe', 'nm0000128');
Lista de actores
En su versin ms simple: USE videoteca;
Editar seccin
CREATE PROCEDURE pa_actores_lista() SELECT * FROM actor; Para ejecutar el procedimiento almacenado: USE videoteca; CALL pa_actores_lista();
Editar seccin
Delimitadores
Editar seccin
Nmero de actores, usando variables y delimitadores: USE videoteca; DELIMITER // CREATE PROCEDURE pa_actores_cantidad2() BEGIN DECLARE actores INT; SELECT COUNT(*) FROM actor INTO actores; SELECT actores; END // DELIMITER ;
Parmetros
Editar seccin
Lista de actores cuyo nombre comienza con una determinada letra: USE videoteca; CREATE PROCEDURE pa_actores_buscar(letra CHAR(2)) SELECT * FROM actor WHERE nombre LIKE letra; Actores cuyo nombre comienza con la letra h:
USE videoteca; CALL pa_actores_buscar('h%'); Ahora, tambin se necesita el nmero de actores localizados: USE videoteca; DELIMITER // CREATE PROCEDURE pa_actores_buscar2( IN letra CHAR(2), OUT actores INT ) BEGIN SELECT * FROM actor WHERE nombre LIKE letra; SELECT COUNT(*) INTO actores FROM actor WHERE nombre LIKE letra; END // DELIMITER ; Llamada a este procedimiento: USE videoteca; CALL pa_actores_buscar2('h%', @cantidad); Obtener el nmero de actores: SELECT @cantidad;
Funciones almacenadas
Nmero de actores:
Editar seccin
USE videoteca; DELIMITER // CREATE FUNCTION fa_actores_cantidad() RETURNS INT BEGIN DECLARE actores INT; SELECT COUNT(*) INTO actores FROM actor; RETURN actores; END // DELIMITER ; Llamada a la funcin almacenada: USE videoteca; SELECT fa_actores_cantidad();
Eliminacin
Editar seccin
Eliminar un procedimiento almacenado y crearlo de nuevo: USE videoteca; DROP PROCEDURE IF EXISTS pa_actores_lista; CREATE PROCEDURE pa_actores_lista() SELECT * FROM actor ORDER BY apellidos, nombre;
Detalles
Editar seccin
SHOW CREATE PROCEDURE pa_actores_lista; Respuesta ms ordenada: USE videoteca; SHOW CREATE PROCEDURE pa_actores_lista\G Detalles de un procedimiento almacenado: USE videoteca; SHOW PROCEDURE STATUS LIKE 'pa_actores_lista'\G Detalles de todos los procedimientos almacenados: USE videoteca; SHOW PROCEDURE STATUS\G
Editar seccin