GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Procedimientos almacenados de MySQL (Crear, Listar, Alterar y Soltar)

Introducción

Los procedimientos almacenados de MySQL agrupan varias tareas en uno y guarde la tarea en el servidor para usarla en el futuro.

Los procedimientos almacenados simplifican la gestión de bases de datos y reducen el tráfico de red. Por ejemplo, emitir una consulta al servidor MySQL procesa la consulta y devuelve los resultados. El uso de procedimientos almacenados guarda las consultas en el servidor para que puedan ejecutarse más tarde.

En este tutorial, aprenderá a crear, enumerar, modificar y descartar procedimientos almacenados.

Requisitos previos

  • Servidor MySQL y MySQL Workbench instalados
  • Una cuenta de usuario de MySQL con privilegios de root

¿Qué son los procedimientos almacenados en MySQL?

Los procedimientos almacenados de MySQL están precompilados Declaraciones SQL almacenada en una base de datos. Son subrutinas que contienen un nombre, una lista de parámetros y sentencias SQL.

Todos los sistemas de bases de datos relacionales admiten procedimientos almacenados y no requieren ningún paquete de entorno de tiempo de ejecución adicional.

¿Cómo utilizar los procedimientos almacenados?

Para invocar procedimientos almacenados, puede utilizar CALL instrucción u otros procedimientos almacenados. La primera vez que se invoca un procedimiento almacenado, MySQL lo busca en el catálogo de la base de datos, compila el código y lo coloca en la memoria caché. y lo ejecuta.

Las ejecuciones posteriores en la misma sesión ejecutan procedimientos almacenados desde la memoria caché, lo que los hace extremadamente útiles para tareas repetitivas.

Los procedimientos almacenados hacen uso de parámetros para pasar valores y personalizar los resultados. Los parámetros se utilizan para especificar las columnas de una tabla en las que opera la consulta y devuelve resultados.

Los procedimientos almacenados también pueden incluir el IF , CASE y LOOP declaraciones de flujo de control que implementan procedimentalmente el código.

Crear procedimiento almacenado

Cree un procedimiento almacenado de dos formas:

1. Usar MySQL Shell

Utilice la siguiente sintaxis para crear un procedimiento almacenado en MySQL:

DELIMITER //
CREATE PROCEDURE procedure_name ( IN | OUT | INOUT parameter_name parameter_datatype (length), … )
BEGIN    
    SQL statements
END //
DELIMITER ;

De forma predeterminada, la sintaxis está asociada con la base de datos en uso, pero también puede usar la sintaxis para otra base de datos especificando el nombre de la base de datos de la siguiente manera:database_name.procedure_name .

Aquí, el primer DELIMITER argumento establece el delimitador predeterminado en // , mientras que el último DELIMITER el argumento lo vuelve a colocar en el punto y coma ; . Para usar varias declaraciones, especifique diferentes delimitadores como $$ .

El nombre del procedimiento viene después de CREATE PROCEDURE argumento. Después del nombre del procedimiento, use paréntesis para especificar los parámetros que se usarán en el procedimiento, el nombre del parámetro, el tipo de datos y la longitud de los datos. Separe cada parámetro con una coma.

Los modos de parámetros son:

  • IN – Se usa para pasar un parámetro como entrada. Cuando se define, la consulta pasa un argumento al procedimiento almacenado. El valor del parámetro siempre está protegido.
  • OUT – Se usa para pasar un parámetro como salida. Puede cambiar el valor dentro del procedimiento almacenado y el nuevo valor se devuelve al programa de llamada.
  • INOUT – Una combinación de IN y OUT parámetros El programa que llama pasa el argumento y el procedimiento puede modificar el INOUT parámetro, devolviendo el nuevo valor al programa.

Por ejemplo:

Ejecute el procedimiento almacenado llamándolo:

CALL procedure_name;

La consulta devuelve resultados para el procedimiento almacenado.

2. Usar MySQL Workbench

Otra forma de crear un procedimiento almacenado es usar el Asistente de MySQL Workbench. El asistente es intuitivo y simplifica el proceso ya que no tienes que colocar delimitadores ni preocuparte por el formato.

Sigue estos pasos:

Paso 1: Haga clic derecho en Procedimientos almacenados en la ventana Navegador de MySQL Workbench y elija Crear procedimiento almacenado... para iniciar el asistente.

Paso 2: Especifique el nombre del procedimiento e ingrese el código dentro de BEGINFIN bloquear.

Paso 3: Revisa el código y haz clic en Aplicar .

Paso 4: Confirme la ejecución haciendo clic en Aplicar y cree el procedimiento haciendo clic en Finalizar .

Paso 5: Ejecute el procedimiento para ver si funciona. Cree una nueva pestaña de SQL para ejecutar consultas.

Paso 6: CALL el procedimiento en la pestaña SQL y haga clic en Ejecutar .

Si no regresa ningún error, MySQL ejecuta el procedimiento almacenado y muestra los resultados.

Lista de procedimientos almacenados

Hay tres formas de ver una lista de todos los procedimientos almacenados:

1. Usar MySQL Shell

Para obtener una lista de todos los procedimientos almacenados a los que tiene acceso, incluidas sus características, utilice la siguiente sintaxis:

SHOW PROCEDURE STATUS [LIKE 'pattern' | WHERE search_condition]

El SHOW PROCEDURE STATUS declaración devuelve una salida larga. La instrucción muestra los nombres y las características de los procedimientos almacenados a los que tiene acceso en el servidor.

Desplácese por la salida para encontrar los procedimientos actualmente en el servidor.

El LIKE argumento encuentra procedimientos almacenados que contienen una palabra específica en su nombre. Usar % para reemplazar cualquier número de caracteres, incluido cero.

Por ejemplo:

El WHERE El argumento le permite enumerar los procedimientos almacenados solo en una base de datos en particular.

Por ejemplo:

En este ejemplo, la declaración devuelve solo los procedimientos almacenados para la 'lista_clientes ' base de datos.

2. Usar diccionario de datos

El esquema_de_información La base de datos contiene una tabla llamada rutinas , que tiene información sobre procedimientos almacenados y funciones relacionadas con todas las bases de datos en el servidor MySQL actual.

Utilice la siguiente sintaxis para ver todos los procedimientos almacenados de una base de datos:

SELECT 
    routine_name
FROM
    information_schema.routines
WHERE
    routine_type = 'PROCEDURE'
        AND routine_schema = 'database_name';

3. Usar MySQL Workbench

Para un enfoque de GUI para ver los procedimientos almacenados, use MySQL Workbench. Siga estos pasos para ver los procedimientos almacenados:

Paso 1 :Haga doble clic en la base de datos que desea utilizar en el Navegador sección.

Paso 2 :Expanda los Procedimientos almacenados elemento desplegable.

Este elemento muestra todos los procedimientos almacenados para la base de datos actual.

Alterar procedimiento almacenado

Alterar un procedimiento almacenado significa cambiar las características de un procedimiento. No hay ninguna declaración en MySQL para modificar los parámetros o el cuerpo de un procedimiento almacenado. Para cambiar los parámetros o el cuerpo, descarte el procedimiento almacenado y cree uno nuevo.

Modifique un procedimiento almacenado de dos maneras:

1. Usar MySQL Shell

Cambie la característica de un procedimiento utilizando ALTER PROCEDURE declaración. Por ejemplo, podemos agregar un comentario a un procedimiento que creamos anteriormente. La sintaxis es:

ALTER PROCEDURE procedure_name
COMMENT 'Insert comment here';

2. Usar MySQL Workbench

MySQL Workbench GUI permite a los usuarios alterar un procedimiento almacenado donde los usuarios pueden agregar parámetros o cambiar el código. MySQL Workbench gotas el procedimiento almacenado existente y crea una nueva después de que se hayan realizado los cambios.

Sigue estos pasos:

Paso 1: En la sección Navegador, haga clic con el botón derecho en el procedimiento almacenado que desea modificar. Seleccione el Alterar procedimiento almacenado... elemento.

Paso 2: Cuando se abra la pestaña, realice los cambios deseados en el procedimiento almacenado existente y haga clic en Aplicar .

Paso 3: Una ventana de revisión de SQL Script aparece mostrando el proceso:eliminando el procedimiento almacenado existente y creando uno nuevo que contiene los cambios.

Haz clic en Aplicar y luego Finalizar en la siguiente ventana para ejecutar el script.

Soltar procedimiento almacenado

Para descartar (eliminar) un procedimiento:

1. Usar MySQL Shell

Elimine un procedimiento almacenado del servidor utilizando el DROP PROCEDURE declaración.

La sintaxis básica es:

DROP PROCEDURE [IF EXISTS] stored_procedure_name;

El IF EXISTS El parámetro elimina el procedimiento almacenado solo si existe en el servidor. Introduzca el nombre del procedimiento almacenado en lugar de stored_procedure_name sintaxis.

Por ejemplo:

Dado que no existe un procedimiento llamado 'test ' en el servidor, el resultado indica que 0 filas se vieron afectadas y que el procedimiento especificado no existe.

Descartar un procedimiento inexistente sin IF EXISTS el parámetro devuelve un error.

2. Usar MySQL Workbench

Para eliminar un procedimiento almacenado con MySQL Workbench, siga estos pasos:

Paso 1: Expanda el elemento Procedimientos almacenados en la sección Navegador. Haga clic con el botón derecho en el procedimiento almacenado que desea eliminar y seleccione Eliminar procedimiento almacenado... en el menú contextual.

Paso 2: En la ventana de confirmación, haz clic en Soltar ahora para eliminar el procedimiento almacenado.

Esta acción borra permanentemente el procedimiento.

Ventajas y desventajas de los procedimientos almacenados de MySQL

Los procedimientos almacenados tienen varias ventajas y desventajas, ya que se adaptan a necesidades específicas. A continuación se presentan algunas de las ventajas y desventajas.

Ventajas de usar procedimientos almacenados

Las ventajas de los procedimientos almacenados son:

Reducción del tráfico de red

Los procedimientos almacenados ayudan a reducir el tráfico de red entre las aplicaciones y el servidor MySQL al mantener toda la lógica de programación en el servidor. En lugar de enviar varios resultados de consultas a través de la red, las aplicaciones solo envían el nombre del procedimiento y la entrada del parámetro.

Seguridad mejorada

El administrador de la base de datos otorga privilegios a las aplicaciones para llamar y acceder solo a procedimientos almacenados específicos sin darles acceso directo a las tablas. Los procedimientos almacenados ayudan a prevenir los ataques de inyección de secuencias de comandos, ya que los parámetros de entrada se tratan como valores y no como código ejecutable.

Lógica empresarial centralizada

Los procedimientos almacenados encapsulan la lógica empresarial reutilizable por varias aplicaciones. Eso ayuda a reducir la duplicación de esa misma lógica en muchas aplicaciones diferentes y hace que la base de datos sea más consistente.

Desventajas de usar procedimientos almacenados

Las desventajas de los procedimientos almacenados son:

Uso de recursos

El uso de muchos procedimientos almacenados y operaciones lógicas hace que el uso de la memoria y la CPU aumente significativamente con cada conexión.

Sin Portabilidad

No es fácil portar procedimientos almacenados escritos en un idioma específico de una instalación a otra. Confiar en un procedimiento almacenado también vincula al usuario a una base de datos en particular.

Resolución de problemas y pruebas

MySQL no proporciona utilidades para probar y depurar procedimientos almacenados, por lo que puede ser difícil depurarlos. Desarrollar y mantener procedimientos almacenados requiere un amplio conocimiento. Este es un desafío para los nuevos desarrolladores y genera costos de mantenimiento adicionales.


Ubuntu
  1. Cómo crear una base de datos en MySQL con MySQL Workbench

  2. Cómo crear una base de datos MySQL en cPanel

  3. ERROR:El procedimiento almacenado no existe

  4. Administrador MySQL de CWP

  5. Eliminar tablas en MySQL

Cómo crear un usuario de base de datos MySQL en cPanel

Cómo mostrar la lista de todas las bases de datos en MySQL

Cómo crear un nuevo usuario y otorgar permisos en MySQL

¿Cómo transferir una base de datos MySQL existente?

Cómo crear una base de datos en MySQL

Cómo crear una lista de correo en cPanel