FANDOM


Enlaces Editar

Versión reducida de la base de datos de ejemplo Editar

Creación 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 Editar

En su versión más simple:

USE videoteca;

CREATE PROCEDURE pa_actores_lista()

SELECT
  *
FROM
  actor;

Para ejecutar el procedimiento almacenado:

USE videoteca;

CALL pa_actores_lista();

Número de registros en la tabla de actores Editar

USE videoteca;

CREATE PROCEDURE pa_actores_cantidad()

SELECT
  COUNT(*)
FROM
  actor;

Delimitadores Editar

Número 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 ;

Parámetros Editar

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, también se necesita el número 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 número de actores:

SELECT @cantidad;

Funciones almacenadas Editar

Número de actores:

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 función almacenada:

USE videoteca;

SELECT fa_actores_cantidad();

Eliminación Editar

Eliminar datos de una tabla en un procedimiento almacenado

USE videoteca;

DELIMITER //

CREATE PROCEDURE pa_actores_eliminar()
BEGIN

DELETE FROM videoteca

END

//
DELIMITER ; 

Detalles Editar

Obtención del código de un procedimiento almacenado existente:

USE videoteca;

SHOW CREATE PROCEDURE pa_actores_lista;

Respuesta más 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 Editar

Inserción 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 inserción:

USE videoteca;

CALL pa_actor_insertar(
  'Tim','Robbins','nm0000209');

Lista de actores:

USE videoteca;

CALL pa_actores_lista();

¡Interferencia de bloqueo de anuncios detectada!


Wikia es un sitio libre de uso que hace dinero de la publicidad. Contamos con una experiencia modificada para los visitantes que utilizan el bloqueo de anuncios

Wikia no es accesible si se han hecho aún más modificaciones. Si se quita el bloqueador de anuncios personalizado, la página cargará como se esperaba.