sql >> Base de Datos >  >> RDS >> Database

¿Qué es un Cursor en SQL y cómo implementarlo?

Los cursores en SQL forman una parte integral de cualquier base de datos que básicamente ayuda al usuario a recorrer la base de datos sin muchas molestias. A través de este artículo sobre Cursor en SQL, le daré todos los detalles necesarios que debe necesitar antes de empezar a trabajar con él.

A continuación se encuentran los temas que discutiré en este artículo:

  • ¿Qué es el Cursor en SQL?
  • Tipos de cursores SQL
  • Sintaxis de un Cursor SQL
  • Ciclo de vida del cursor

¿Qué es el cursor en SQL?

El cursor en SQL es un objeto que permite recorrer las filas de cualquier conjunto de resultados. Con esto, puede procesar una fila individual de una base de datos que devuelve una consulta. Es un área de trabajo temporal o área de contexto que se crea en el sistema de memoria durante la ejecución de una instrucción SQL que almacena los datos recuperados de la base de datos y ayuda en su manipulación. Puede considerarlo como una disposición de filas junto con un puntero que apunta a la fila actual. Un cursor es un objeto de base de datos que puede contener más de una fila, pero solo puede procesar una fila a la vez. El conjunto de filas contenidas por un cursor se conoce como activo. colocar. Por lo tanto, puede controlar el registro de una tabla en una técnica singleton, es decir, una fila en cualquier momento.

Ahora que está familiarizado con lo que es un cursor en SQL, avancemos y echemos un vistazo a sus diversos tipos.

Tipos de cursor SQL

SQL proporciona dos tipos de cursores que he enumerado a continuación:

  1. Cursor implícito

Siempre que las operaciones DML como INSERTAR, ACTUALIZAR y ELIMINAR se procesan en la base de datos, los cursores implícitos se generan automáticamente y el marco los utiliza. Estos tipos de cursores se utilizan para el procesamiento interno y no se pueden controlar ni hacer referencia desde otra área de código. Los cursores implícitos en SQL solo contienen las filas afectadas por la operación y solo pueden hacer referencia al cursor más reciente utilizando los atributos del cursor que se muestran a continuación en la tabla.

Atributo Descripción
%FOUND Devolverá VERDADERO en caso de que una declaración INSERTAR, ACTUALIZAR o ELIMINAR afecte una o más filas o una declaración SELECCIONAR EN devuelva una o más filas. En otros casos, devolverá FALSO.
%NO ENCONTRADO Técnicamente es lo opuesto al atributo %FOUND. Devuelve VERDADERO en caso de que una instrucción INSERTAR, ACTUALIZAR o ELIMINAR no afecte a ninguna fila o una instrucción SELECT INTO no devuelva filas. De lo contrario, devuelve simplemente FALSO.
%ISOPEN Este atributo siempre devolverá FALSO para los cursores implícitos, ya que el cursor SQL se cierra automáticamente inmediatamente después de ejecutar la instrucción SQL asociada.
%ROWCOUNT Devuelve el número total de filas afectadas por una declaración INSERT, UPDATE o DELETE, o las filas devueltas por una declaración SELECT INTO.
  1. Cursor explícito

Este tipo de cursor se genera cada vez que un usuario procesa datos a través de un bloque SQL. Generalmente, el uso de la consulta SELECT desencadena la creación de un cursor explícito y puede contener más de una fila pero procesar solo una a la vez. Este tipo de cursor se utiliza para contener los registros presentes en una columna. Esto permite a los programadores crear un área de contexto con nombre para ejecutar sus operaciones DML para un mejor control. Además, debe definirse en el bloque SQL y, a su vez, se crea para una consulta SELECT usando ese código.

Para comprender mejor un cursor, veamos ahora cuál es la sintaxis de un cursor en SQL.

Sintaxis de un Cursor SQL

A continuación se muestra la sintaxis general para crear un cursor explícito.

CURSOR cursorName IS selectStatement;

Aquí:

cursorName:representa un nombre válido para el cursor

selectStatement:esto representa una consulta de selección que devolverá varias filas

Prosigamos ahora con este artículo y veamos el ciclo de vida de un cursor SQL.

Ciclo de vida del cursor

Hay básicamente 5 etapas en el ciclo de vida de un cursor en SQL que he enumerado a continuación:

  1. Declarar
DECLARE cursorName CURSOR
FOR selectStatement;

Este paso lo ayudará a especificar el nombre y el tipo de datos del cursor y la instrucción SELECT definirá su conjunto de resultados.

  1. Abrir
OPEN cursorName;

Este paso le permitirá abrir y llenar el cursor ejecutándolo.

  1. Obtener
FETCH NEXT FROM cursor INTO variableList;

Este paso recuperará una fila del cursor y la almacenará en una o más variables.

[Opcional] Comprobar estado

WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cursorName;
END;

Esta función devuelve el estado de la última instrucción FETCH que se ejecutó contra el cursor. En caso de que esta función devuelva 0, significa que la operación FETCH fue exitosa. Para obtener todas las filas del cursor, se utiliza la cláusula WHILE.

  1. Cerrar
CLOSE cursorName;

Este paso lo ayudará a cerrar el cursor después de que se hayan completado las operaciones.

  1. Desasignar
DEALLOCATE cursor_name;

Este paso ayudará a desasignar el cursor y liberar espacio en la memoria.

Con esto, me gustaría concluir este artículo sobre Cursor en SQL. Espero que este artículo te haya ayudado a agregar valor a tus conocimientos. Para obtener más información sobre SQL o bases de datos, puede consultar nuestra lista de lectura completa aquí:Bases de datos Edureka .

Conceptos básicos de SQL para principiantes | Aprenda SQL | Tutorial de SQL para principiantes | Edureka

Este video de Edureka sobre "Conceptos básicos de SQL para principiantes" lo ayudará a comprender los conceptos básicos de SQL y también las consultas de SQL, que son muy populares y esenciales.

Si desea obtener una capacitación estructurada en MySQL, consulte nuestra Capacitación para la certificación de MySQL DBA que viene con capacitación en vivo dirigida por un instructor y experiencia en proyectos de la vida real. Esta capacitación lo ayudará a comprender MySQL en profundidad y lo ayudará a dominar el tema.

¿Tiene alguna pregunta para nosotros? Menciónelo en la sección de comentarios de ”Cursor in SQL ” y me pondré en contacto con usted.