Diferencia entre revisiones de «Cursor (base de datos)»

Contenido eliminado Contenido añadido
Xosema (discusión · contribs.)
m categorizado
Sin resumen de edición
Línea 4:
 
Existen sentencias [[SQL]] que no requieren del uso de cursores. Ello incluye la sentencia [[Sentencia Insert|Insert]], así como la mayoría de formas del [[Sentencia Update|Update]] o el [[Sentencia Delete|Delete]]. Incluso una sentencia [[Sentencia Select|Select]] puede no requerir un cursor si se utiliza en la variante de ''SELECT...INTO'', ya que esta variante sólo devuelve una fila.
 
==Trabajando con cursores==
 
Esta sección introduce la forma en la que los cursores deberían ser utilizados en aplicaciones con SQL empotrado, según el estándar [[SQL:2003]]. No todas las capas de aplicación para sistemas de bases de datos relacionales siguen este estándar, utilizando en su lugar una interfaz diferente, como CLI o JDBC.
 
Un cursor es creado utilizando la sentencia DECLARE CURSOR. Es obligatorio asignarle un nombre.
 
DECLARE ''cursor_name'' CURSOR FOR SELECT ... FROM ...
 
Antes de ser utilizado, el cursor debe ser abierto con una sentencia <code>OPEN</code>. Como resultado de esta sentencia, el cursor se posiciona ''antes'' de la primera fila del set de resultados.
 
OPEN ''cursor_name''
 
Un cursor se posiciona en una fila específica del set de resultados con la sentencia <code>FETCH</code>. Una sentencia fetch transfiere la información de la fila a la aplicación. Una vez todas las filas han sido procesadas o la sentencia fetch queda posicionada en una fila no existente (ver [[#Cursores de recorrido| cursores de recorrido]] más abajo), el SGBD devuelve un SQLSTATE '02000' (acompañado normalmente de un SQLCODE +100) para indicar el final del set de resultados.
 
FETCH ''cursor_name'' INTO ...
 
El último pas consiste en cerra el cursor utilizando la sentencia <code>CLOSE</code>.
 
CLOSE ''cursor_name''
 
Una vez un cursor está cerrado puede reabrirse de nuevo, lo cual implica que la consulta es reevaluada y se crea un nuevo set de resultados.
 
=== Cursores de recorrido ===
 
Los cursores pueden declararse como de recorrido o no. Si son de recorrido, éste indica la dirección en la que el cursor puede moverse.
 
[[Categoría:Bases de datos]]