Diferencia entre revisiones de «Cursor (base de datos)»
Contenido eliminado Contenido añadido
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]]
|