Cursores
Es un elemento que representará a un conjunto de datos determinado por una
consulta T-SQL, el cursor permitirá recorrer fila a fila, leer y eventualmente
modificar dicho conjunto de resultados.
Las operaciones de una base de datos relacional actúan en un conjunto completo
de filas. Por ejemplo, el conjunto de filas que devuelve una instrucción SELECT
está compuesto por todas las filas que satisfacen las condiciones de la cláusula
WHERE de la instrucción.
Sintaxis
DECLARE cursor_name [ INSENSITIVE ] [ SCROLL ] CURSOR
FOR select_statement
[ FOR { READ ONLY | UPDATE [ OF column_name [ ,...n ] ] } ]
[;]
Transact-SQL Extended Syntax
DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR select_statement
[ FOR UPDATE [ OF column_name [ ,...n ] ] ]
[;]
Administración de Procedimientos Almacenados (Creación,
Modificación y Eliminación)
Declaracion de variables para el cursor
DECLARE @Id int,
@Nombre varchar(255),
@Apellido1 varchar(255),
@Apellido2 varchar(255),
@NifCif varchar(20),
@FxNacimiento datetime
CREACIÓN
Declaración del cursor
DECLARE cClientes CURSOR FOR
SELECT Id, Nombre, Apellido1,
Apellido2, NifCif, FxNacimiento
FROM CLIENTES
Apertura del cursor
OPEN cClientes
Lectura de la primera fila del cursor
FETCH cClientes INTO @id, @Nombre,
@Apellido1,
@Apellido2, @NifCif,
@FxNacimiento
WHILE (@@FETCH_STATUS = 0 )
BEGIN
PRINT @Nombre + ' ' + @Apellido1 + ' ' + @Apellido2
Lectura de la siguiente fila del cursor
FETCH cClientes INTO @id, @Nombre,
@Apellido1,
@Apellido2, @NifCif, @FxNacimiento
END
-- Cierre del cursor
CLOSE cClientes
-- Liberar los recursos
DEALLOCATE cClientes
MODIFICACIÓN
Declaracion de variables para el cursor
DECLARE @Id int,
@Nombre varchar(255),
@Apellido1 varchar(255),
@Apellido2 varchar(255),
@NifCif varchar(20),
@FxNacimiento datetime
Declaración del cursor
DECLARE cClientes CURSOR FOR
SELECT Id, Nombre, Apellido1,
Apellido2, NifCif, FxNacimiento
FROM CLIENTES
FOR UPDATE
ELIMINACIÓN
Delete Employer_Cursor
Ejemplos
Abrir un cursor y recorrelo
DECLARE Employee_Cursor CURSOR FOR
SELECT LastName, FirstName
FROM Northwind.dbo.Employees
WHERE LastName like 'B%'
OPEN Employee_Cursor
FETCH NEXT FROM Employee_Cursor
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Employee_Cursor
END
CLOSE Employee_Cursor
DEALLOCATE Employee_Cursor
Abrir un cursor e imprimir su contenido
SET NOCOUNT ON
DECLARE
@au_id varchar(11),
@au_fname varchar(20),
@au_lname varchar(40),
@message varchar(80),
@title varchar(80)
PRINT "-------- Utah Authors report --------"
Recorrer un cursor
USE pubs
GO
DECLARE authors_cursor CURSOR FOR
SELECT au_lname
FROM authors
WHERE au_lname LIKE "B%"
ORDER BY au_lname
OPEN authors_cursor
FETCH NEXT FROM authors_cursor
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM authors_cursor
END
CLOSE authors_cursor
DEALLOCATE authors_cursor
Resumen
Cursores Un cursor permite acceder un resultado (result set), una fila (registro) a la
vez. Debido a su orientación en filas, los cursores a menudo son utilizados en
ciclos (loops) que localizan y procesan una fila dentro de cada iteración del ciclo.
La implementación del cursor en MySQL tiene las siguientes propiedades: este es
proporcionado para cursores de solo lectura (read-only); no pueden ser utilizados
para modificar tablas. Los cursores solo avanzan a través de un resultado fila por
fila; no permiten ir hacia atrás y luego hacia delatante libremente.

Cursores

  • 2.
    Cursores Es un elementoque representará a un conjunto de datos determinado por una consulta T-SQL, el cursor permitirá recorrer fila a fila, leer y eventualmente modificar dicho conjunto de resultados. Las operaciones de una base de datos relacional actúan en un conjunto completo de filas. Por ejemplo, el conjunto de filas que devuelve una instrucción SELECT está compuesto por todas las filas que satisfacen las condiciones de la cláusula WHERE de la instrucción.
  • 3.
    Sintaxis DECLARE cursor_name [INSENSITIVE ] [ SCROLL ] CURSOR FOR select_statement [ FOR { READ ONLY | UPDATE [ OF column_name [ ,...n ] ] } ] [;] Transact-SQL Extended Syntax DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL ] [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] [ TYPE_WARNING ] FOR select_statement [ FOR UPDATE [ OF column_name [ ,...n ] ] ] [;]
  • 4.
    Administración de ProcedimientosAlmacenados (Creación, Modificación y Eliminación) Declaracion de variables para el cursor DECLARE @Id int, @Nombre varchar(255), @Apellido1 varchar(255), @Apellido2 varchar(255), @NifCif varchar(20), @FxNacimiento datetime CREACIÓN
  • 5.
    Declaración del cursor DECLAREcClientes CURSOR FOR SELECT Id, Nombre, Apellido1, Apellido2, NifCif, FxNacimiento FROM CLIENTES Apertura del cursor OPEN cClientes
  • 6.
    Lectura de laprimera fila del cursor FETCH cClientes INTO @id, @Nombre, @Apellido1, @Apellido2, @NifCif, @FxNacimiento WHILE (@@FETCH_STATUS = 0 ) BEGIN PRINT @Nombre + ' ' + @Apellido1 + ' ' + @Apellido2
  • 7.
    Lectura de lasiguiente fila del cursor FETCH cClientes INTO @id, @Nombre, @Apellido1, @Apellido2, @NifCif, @FxNacimiento END -- Cierre del cursor CLOSE cClientes -- Liberar los recursos DEALLOCATE cClientes
  • 8.
    MODIFICACIÓN Declaracion de variablespara el cursor DECLARE @Id int, @Nombre varchar(255), @Apellido1 varchar(255), @Apellido2 varchar(255), @NifCif varchar(20), @FxNacimiento datetime
  • 9.
    Declaración del cursor DECLAREcClientes CURSOR FOR SELECT Id, Nombre, Apellido1, Apellido2, NifCif, FxNacimiento FROM CLIENTES FOR UPDATE ELIMINACIÓN Delete Employer_Cursor
  • 10.
    Ejemplos Abrir un cursory recorrelo DECLARE Employee_Cursor CURSOR FOR SELECT LastName, FirstName FROM Northwind.dbo.Employees WHERE LastName like 'B%' OPEN Employee_Cursor FETCH NEXT FROM Employee_Cursor WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM Employee_Cursor END CLOSE Employee_Cursor DEALLOCATE Employee_Cursor
  • 11.
    Abrir un cursore imprimir su contenido SET NOCOUNT ON DECLARE @au_id varchar(11), @au_fname varchar(20), @au_lname varchar(40), @message varchar(80), @title varchar(80) PRINT "-------- Utah Authors report --------"
  • 12.
    Recorrer un cursor USEpubs GO DECLARE authors_cursor CURSOR FOR SELECT au_lname FROM authors WHERE au_lname LIKE "B%" ORDER BY au_lname OPEN authors_cursor FETCH NEXT FROM authors_cursor WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM authors_cursor END CLOSE authors_cursor DEALLOCATE authors_cursor
  • 13.
    Resumen Cursores Un cursorpermite acceder un resultado (result set), una fila (registro) a la vez. Debido a su orientación en filas, los cursores a menudo son utilizados en ciclos (loops) que localizan y procesan una fila dentro de cada iteración del ciclo. La implementación del cursor en MySQL tiene las siguientes propiedades: este es proporcionado para cursores de solo lectura (read-only); no pueden ser utilizados para modificar tablas. Los cursores solo avanzan a través de un resultado fila por fila; no permiten ir hacia atrás y luego hacia delatante libremente.