En la mayoría de los casos, al ejecutar consultas SQL utilizando MySQL Shell o MySQL Workbench, no guardamos los resultados, a pesar de que tenemos la funcionalidad para guardar los resultados procesados por el servidor utilizando un procedimiento almacenado.
En este tutorial, no discutiré procedimientos, funciones o desencadenantes almacenados. En cambio, simplemente me sumergiré para mostrarle cómo puede usar los cursores de MySQL para ejecutar los resultados en los procedimientos almacenados.
Antes de comenzar a crear y usar un cursor con ejemplos, tomemos un momento para discutir algunos puntos clave sobre un cursor que debe tener en cuenta:
Características de un cursor mysql
Ahora que sabemos lo que significa un cursor, podemos comenzar a ilustrar cómo funciona usando ejemplos del mundo real:
Uso básico
La sintaxis general para declarar un cursor en mysql es sencillo. Comenzamos usando la palabra clave declarar como se muestra en la consulta de muestra a continuación:
Cómo declarar un cursor
Declarar cursor_name cursor para select_expression;El cursor_name es el nombre dado al cursor durante la declaración. Observe que la declaración de un cursor debe ser después de cualquier variable declarada para evitar que MySQL resulte en errores.
El siguiente es el select_expression, que almacena la instrucción SELECT asociada con el cursor.
Cómo abrir un cursor
Una vez que tenemos un cursor declarado y MySQL es consciente de que el cursor existe, podemos comenzar a usarlo, lo que requiere que se abra el cursor.
La sintaxis general para abrir un cursor es como se muestra en la consulta a continuación:
Abrir cursor_name;Este comando abre los cursores a los que se hace referencia por su nombre y uno puede comenzar a usarlo.
Cómo recuperar datos
Tener el cursor abierto le permite obtener la información almacenada en un procedimiento, una función o un disparador.
La sintaxis general para obtener datos utilizando un cursor es como se muestra:
Buscar cursor_name en variables;NOTA: Como se mencionó, asegúrese de que el cursor se use después de que se declaren las variables para evitar errores.
Cómo cerrar y liberar un cursor
Una vez que se completan las operaciones que requieren el cursor definido, es mejor cerrar el cursor que libera la memoria asociada con él.
Una vez que se ha cerrado un cursor, un usuario necesita volver a abrir el cursor utilizando las palabras clave abiertas (que se muestran arriba) antes de usar el cursor.
No necesita declarar el cursor después de la declaración cerrada.
La sintaxis general para cerrar un cursor es como se muestra en la consulta a continuación:
Cerrar cursor_name;Manejo de errores
El cursor mysql funciona leyendo recursivamente la siguiente fila en el conjunto de resultados. Si la siguiente fila no está disponible, el cursor cerrará y no devolverá los datos a menos que se especifiquen. Esto puede ser un problema, especialmente después de que el cursor alcanza el final del resultado.
Como solución, se define un controlador no encontrado. Esto especifica la acción a tomar si no se encuentra la siguiente fila.
La sintaxis general para el manejo de errores al usar un cursor es:
Declarar Continir Handler no encontrado establecido terminado = True;El valor terminado es una variable utilizada para especificar que el cursor ha alcanzado el final del resultado. El nombre de la variable puede ser cualquier nombre, siempre que se ajuste a la Convención de Naming Variable MySQL.
NOTA: Al igual que todas las variables utilizadas en un cursor, debe definirse antes de que se use en el cursor.
Caso de uso de ejemplo
Permítanos crear un cursor que recopile los correos electrónicos de los clientes disponibles en la tabla de clientes de la base de datos de muestras de Sakila.
El recurso para descargar e instalar la base de datos Sakila está a continuación:
https: // dev.mysql.com/doc/sakila/en/
Lo siguiente ilustra un procedimiento que utiliza un cursor para obtener correos electrónicos:
Usa sakila;Una vez que se ejecute la consulta, obtendrá una salida como se muestra a continuación:
Conclusión
En este tutorial, pasamos el uso de MySQL Crossors para analizar los datos almacenados en el conjunto de resultados. Considere la documentación para dominar cómo implementar los cursores.