“Conocimiento Hardware>Ratones y teclados

¿Qué son los cursores?

2012/9/26
Los cursores son objetos de base de datos que le permiten acceder y manipular datos una fila a la vez desde un conjunto de resultados devuelto por una consulta SQL. Piense en ellos como punteros que navegan a través de las filas en un conjunto de resultados.

Aquí hay un desglose de lo que son y por qué se usan:

Conceptos clave:

* Conjunto de resultados: Una colección de filas devuelta por una consulta SQL. Cuando ejecuta una instrucción `select`, el servidor de base de datos genera un conjunto de resultados.

* Procesamiento de fila por fila: Los cursores le permiten obtener y procesar cada fila de los resultados establecidos individualmente. Esto contrasta con las operaciones SQL estándar que generalmente funcionan en todo el resultado establecido a la vez.

* Pointer/Iterator: Un cursor esencialmente actúa como un puntero o iterador que realiza un seguimiento de la fila actual que se accede. Puede mover el cursor hacia adelante para acceder a filas posteriores.

¿Por qué usar cursores?

Los cursores generalmente se usan cuando necesita realizar operaciones complejas en cada fila de un conjunto de resultados que sea difícil o imposible de lograr con las declaraciones SQL estándar. Los escenarios comunes incluyen:

* Actualizaciones/eliminaciones condicionales: Es posible que deba actualizar o eliminar una fila según los valores que se encuentran en otras filas del mismo conjunto de resultados o en otras tablas.

* Cálculos basados ​​en filas anteriores: Es posible que deba calcular un total de funcionamiento, promedio móvil u otro valor acumulativo que depende de los valores en las filas anteriores.

* Integrando con sistemas externos: Es posible que deba recuperar datos de una base de datos y luego usar esos datos para interactuar con aplicaciones externas o API, procesando cada fila individualmente.

* Lógica compleja dentro de los procedimientos almacenados: Los cursores a menudo se usan dentro de los procedimientos almacenados cuando necesita implementar una lógica comercial compleja que requiere iteración a través de un conjunto de resultados.

* Informes: Generar informes personalizados o realizar formateo de datos complejos a menudo se basa en el procesamiento de fila por fila.

Cómo funcionan los cursores (simplificados):

1. Declarar el cursor: Primero declara un cursor, especificando la declaración `select` que generará el conjunto de resultados con el que funcionará el cursor.

2. Abra el cursor: Abrir el cursor ejecuta la instrucción `select` y crea el conjunto de resultados. El cursor se coloca antes de la primera fila.

3. Fetch filas: Utiliza una instrucción 'Fetch` para recuperar los datos de la fila actual y mover el cursor a la siguiente fila.

4. Procese los datos: Dentro de un bucle, procesa los datos recuperados de cada fila. Esto puede implicar actualizar otras tablas, realizar cálculos o llamar a procedimientos externos.

5. Cierre el cursor: Después de procesar todas las filas, cierre el cursor, liberando los recursos que estaba utilizando.

6. Dealloce el cursor: Finalmente, traiga el cursor.

Ejemplo (sintaxis específica conceptual varía según la base de datos):

`` `SQL

- Declarar un cursor

Declarar cursor my_cursor para

Seleccione Empleado_id, salario de los empleados donde department_id =10;

- Abra el cursor

Abrir my_cursor;

- busca la primera fila

Obtenga a continuación de my_cursor a @emp_id, @salary;

- recorrer el conjunto de resultados

Mientras @@ fetch_status =0 - verifique si la búsqueda fue exitosa

COMENZAR

- Procese los datos (Ejemplo:elevar el salario si está por debajo de un umbral)

Si @salary <50000

COMENZAR

Actualizar empleados establecer salario =salario * 1.10 donde empleado_id =@emp_id; - Aumentar el salario en un 10%

FIN;

- busca la siguiente fila

Obtenga a continuación de my_cursor a @emp_id, @salary;

FIN;

- Cierre el cursor

Cerrar my_cursor;

- Dealloce el cursor

DealLocate my_cursor;

`` `` ``

Consideraciones y desventajas importantes:

* Impacto de rendimiento: Los cursores pueden ser significativamente más lentos que las operaciones SQL basadas en establecimientos, especialmente cuando se trata de grandes conjuntos de resultados. El procesamiento de fila por fila es inherentemente menos eficiente que el procesamiento de datos en lotes. Siempre que sea posible, intente lograr el resultado deseado utilizando consultas SQL estándar.

* Complejidad: Los cursores pueden hacer que su código sea más complejo y difícil de mantener.

* Problemas de bloqueo: Los cursores pueden contener bloqueos en los recursos de la base de datos durante períodos más largos, lo que puede conducir a problemas de contención y rendimiento.

* Alternativas: Antes de recurrir a los cursores, explore alternativas como:

* Operaciones SQL basadas en configuraciones: A menudo puede lograr el mismo resultado con una consulta inteligente SQL.

* Procedimientos almacenados con tablas temporales: Cree una tabla temporal para mantener el conjunto de resultados intermedios y luego realizar operaciones en la tabla temporal.

* Uso del código de aplicación (por ejemplo, Python, Java) para procesar los datos: Recupere todo el resultado establecido en su aplicación y realice el procesamiento de fila por fila allí. Esto a veces puede ser más eficiente que usar cursores.

En resumen, los cursores son una herramienta potente pero a menudo menos eficiente para el procesamiento de fila por fila en bases de datos. Úselos solo cuando sea necesario y considere cuidadosamente las implicaciones de rendimiento. Esfuércese por usar operaciones SQL basadas en establecimientos siempre que sea posible.

Ratones y teclados
¿Qué tipo de entrada es compatible con un teclado?
Las desventajas de un teclado de Grande
¿Cómo hacer Superíndice en una Computadora
Definición de un teclado de ordenador
Instrucciones Ratón Inalámbrico
Cuando seleccionas algo con el mouse, selecciona todo en la pantalla cuando solo quieres una cosa y sigue haciendo esto. También se reinicia, ¿cómo puedo detener esto?
Cómo solucionar problemas de un ratón Microsoft Wireless Notebook Presenter 8000
¿Por qué mi ratón mascota cojearía de la pata delantera izquierda?
Conocimiento de la computadora © http://www.ordenador.online