Hola,
Los cursores son un recurso más que ofrecen algunos SGBD como parte del set de instrucciones que se pueden usar en procedimientos almacenados.
Yo personalmente pienso que son de gran utilidad para el procesamiento registro a registro del resultado de una consulta. El porque hacerlo mediante un cursor y no directamente sobre una consulta depende fundamentalmente de la naturaleza del problema(no todo es solucionable en una consulta), de las preferencias del desarrollador, de problemas de rendimiento, de preferir un código mejor estructurado, etc...
Voy a inventar un ejemplo. Si queremos sumar a un campo de tabla una constante obviamente no es necesario un cursor, ya que podemos hacerlo con una instrucción de update muchos mas facilmente y también serà mas eficiente, pero si imaginamos que queremos calcular como afecta la fuerza gravitacional del conjunto de planetas a cada uno de los planetas del sistema solar, además de la distancia con respecto a los otros en un momento del tiempo dado etc.., entonces lo más práctico quizás sea desarrollar las funciones que realizan estos cálculos e ir llamándolas para cada planeta con ayuda de un cursor.
en oracle:
- Código: Seleccionar todo
declare
cursor planetas is
select id_planeta from planetas;
begin
for planeta in planetas loop
actualizar_fuerzas_gravitacionales(planeta.id_planeta);
actualizar_distancias(planeta.id_planeta);
....
end loop;
end;
Existen muchas aplicaciones para los cursores, pero no podemos cometer el error de usarlos para todo.
Espero os sirva.