Sunteți pe pagina 1din 6

Creacin de la base de datos: DROP DATABASE IF EXISTS videoteca; CREATE DATABASE videoteca; Tabla de actores: USE videoteca; DROP

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();

Nmero de registros en la tabla de actores

Editar seccin

USE videoteca; CREATE PROCEDURE pa_actores_cantidad() SELECT COUNT(*) FROM actor;

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

Obtencin del cdigo de un procedimiento almacenado existente: USE videoteca;

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

Procedimientos almacenados activos


Insercin de un nuevo actor: USE videoteca; CREATE PROCEDURE pa_actor_insertar( nuevo_nombre VARCHAR(64), nuevo_apellidos VARCHAR(64), nuevo_imdb VARCHAR(32) ) INSERT INTO actor( nombre, apellidos, imdb ) VALUES( nuevo_nombre, nuevo_apellidos, nuevo_imdb ); Una insercin: USE videoteca; CALL pa_actor_insertar(

Editar seccin

'Tim','Robbins','nm0000209'); Lista de actores: USE videoteca; CALL pa_actores_lista();

S-ar putea să vă placă și