SlideShare una empresa de Scribd logo
1 de 8
En SQL Server un cursor puede definirse
como 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.
.
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)
Creación
-- Declaracion de variables para el cursor
DECLARE @ Id int,
@ Nombre varchar(255),
@ 1 Apellido varchar(255),
@ 2 Apellido varchar(255),
@ NifCif varchar(20),
@ FxNacimiento datetime
-- Declaración del cursor
DECLARE cClientes CURSORFOR
SELECT Id,Nombre, 1 Apellido ,
Apellido2,NifCif, FxNacimiento
FROM CLIENTES
-- Apertura del cursor
OPEN cClientes
-- Lectura de la primera fila del cursor
FETCH cClientes INTO @id, @Nombre, @
1 Apellido ,
@ 2 Apellido , @NifCif, @FxNacimiento
WHILE (@@ _ FETCH STATUS = 0 )
BEGIN
PRINT @ Nombre+' '+ @ 1 Apellido +' '+ @
2 Apellido
-- Lectura de la siguiente fila del cursor
FETCH cClientes INTO @id, @Nombre, @
1 Apellido ,
@ 2 Apellido , @NifCif, @FxNacimiento
END
-- Cierre del cursor
CLOSE cClientes
-- Liberar los recursos
DEALLOCATE cClientes
Modificación
Para actualizar los datos de un cursor
debemos especificar FOR UPDATE
después de la sentencia SELECT en la
declaración del cursor y WHERE CURRENT
OF , en la sentencia UPDATE tal y como
muestra el siguiente ejemplo:
-- Declaración de variables para el cursor
DECLARE @ Id int,
@ Nombre varchar(255),
@ 1 Apellido varchar(255),
@ 2 Apellido varchar(255),
@ NifCif varchar(20),
@ FxNacimiento datetime
-- Declaración del cursor
DECLARE cClientes CURSORFOR
SELECT Id,Nombre, 1 Apellido ,
Apellido2,NifCif, FxNacimiento
FROM CLIENTES
FORUPDATE
-- Apertura del cursor
OPEN cClientes
-- Lectura de la primera fila del cursor
FETCH cClientes
INTO @id, @Nombre, @ 1 Apellido , @ 2
Apellido , @NifCif, @FxNacimiento
WHILE (@@ _ FETCH STATUS = 0 )
BEGIN
UPDATE Clientes
SET 2 APELLIDO = isnull(@ 2 Apellido ,'')+ '
- ' Modificado
WHERECURRENT OF cClientes
-- Lectura de la siguiente fila del cursor
FETCH cClientes
INTO @id, @Nombre, @ 1 Apellido , @ 2
Apellido ,
@NifCif, @FxNacimiento
END
-- Cierre del cursor
CLOSE cClientes
-- Liberar los recursos
DEALLOCATE cClientes
Eliminación:
CREATE Procedure DBPSRemoveTest_Sp
As
Begin
DECLARE TEST_CURSOR CURSOR FOR
SELECT * FROM Test DECLARE
@RetPeriod intDECLARE @AuthId Varchar(50)
OPEN TEST_CURSOR FETCH NEXT FROM TEST_CURSOR
INTO @RETPERIOD,@AUTHID
WHILE@@FETCH_STATUS=0 BEGIN BEGIN
delete from test where userid=@RetPeriod and
Username=@Authid
IF(@@ROWCOUNT=0)
PRINT 'Failed to delete the row from the table END
FETCH NEXT FROM TEST_CURSOR INTO
@RETPERIOD,@AUTHID END CLOSE TEST_CURSOR
DEALLOCATE TEST_CURSOR end
GO
Aprendimos a crear un cursor para la exploración de registro por
registro de un conjunto de registros. Este tipo de operación, puede
reducir el rendimiento de la aplicación, reducir la concurrencia,
disminuir el ancho de banda, bloquear el acceso a recursos, entre
otros; es por eso que se debe usar en situaciones muy especiales
y prestando particular atención con no afectar el desempeño de la
aplicación.
CONCLUSIONES
GRACIAS….

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Sql server 2014 básico
Sql server 2014 básicoSql server 2014 básico
Sql server 2014 básico
 
CURSORES
CURSORESCURSORES
CURSORES
 
CURSORES
CURSORESCURSORES
CURSORES
 
Comandos mysql
Comandos mysqlComandos mysql
Comandos mysql
 
Comandos del-ddl-y-del-dml-liz
Comandos del-ddl-y-del-dml-lizComandos del-ddl-y-del-dml-liz
Comandos del-ddl-y-del-dml-liz
 
Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)
 
Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)
 
Triggers
TriggersTriggers
Triggers
 
Introduccion a SQL
Introduccion a SQL Introduccion a SQL
Introduccion a SQL
 
HTML5 API WebSQL Database: DML: Data Manipulation Language
HTML5 API WebSQL Database: DML: Data Manipulation LanguageHTML5 API WebSQL Database: DML: Data Manipulation Language
HTML5 API WebSQL Database: DML: Data Manipulation Language
 
Consultas básicas en sql server
Consultas básicas en sql serverConsultas básicas en sql server
Consultas básicas en sql server
 
Ejemplo ddl dml
Ejemplo ddl dmlEjemplo ddl dml
Ejemplo ddl dml
 
Utilizando DDL SQL oracle Z051 Cap 11
Utilizando DDL SQL oracle Z051 Cap 11Utilizando DDL SQL oracle Z051 Cap 11
Utilizando DDL SQL oracle Z051 Cap 11
 
Fundamentos de SELECT SQL
Fundamentos de SELECT SQLFundamentos de SELECT SQL
Fundamentos de SELECT SQL
 
Taller de MySQL (DDL)
Taller de MySQL (DDL)Taller de MySQL (DDL)
Taller de MySQL (DDL)
 
CONSULTA SQL ROMERO
CONSULTA SQL ROMEROCONSULTA SQL ROMERO
CONSULTA SQL ROMERO
 
CURSORES EN SQL SERVER
CURSORES EN SQL SERVERCURSORES EN SQL SERVER
CURSORES EN SQL SERVER
 
Tipos de consultas sql
Tipos de consultas sqlTipos de consultas sql
Tipos de consultas sql
 
Introduccion al sql query
Introduccion al sql queryIntroduccion al sql query
Introduccion al sql query
 
Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014
 

Similar a Cursores

Similar a Cursores (20)

7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server
 
Exposición
ExposiciónExposición
Exposición
 
TRANSACT-SQL
TRANSACT-SQLTRANSACT-SQL
TRANSACT-SQL
 
Exposición
ExposiciónExposición
Exposición
 
MANEJO DE SENTENCIAS DE DEFINICION
MANEJO DE SENTENCIAS DE DEFINICIONMANEJO DE SENTENCIAS DE DEFINICION
MANEJO DE SENTENCIAS DE DEFINICION
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)
 
Sentencias sql
Sentencias sql Sentencias sql
Sentencias sql
 
Sentencias Sql
Sentencias SqlSentencias Sql
Sentencias Sql
 
Transact+Sql+2005
Transact+Sql+2005Transact+Sql+2005
Transact+Sql+2005
 
Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005
 
Qué es SQL
Qué es SQL Qué es SQL
Qué es SQL
 
Investigacion Uno
Investigacion UnoInvestigacion Uno
Investigacion Uno
 
Tm13 introduccion al_sql
Tm13 introduccion al_sqlTm13 introduccion al_sql
Tm13 introduccion al_sql
 
Charla Mysql
Charla MysqlCharla Mysql
Charla Mysql
 
Textos sqli_mssql
 Textos sqli_mssql Textos sqli_mssql
Textos sqli_mssql
 
1. introduccion a transact-sql
1.  introduccion a transact-sql1.  introduccion a transact-sql
1. introduccion a transact-sql
 
Tema4
Tema4Tema4
Tema4
 
Precentacion de sql visual
Precentacion de sql visualPrecentacion de sql visual
Precentacion de sql visual
 
IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005
 
Consultas
ConsultasConsultas
Consultas
 

Más de Yordin Alberto Pérez Saucedo (13)

Olap
OlapOlap
Olap
 
Diapositivas
DiapositivasDiapositivas
Diapositivas
 
Vistas
VistasVistas
Vistas
 
Lenguaje Transact SQL
Lenguaje Transact SQLLenguaje Transact SQL
Lenguaje Transact SQL
 
Reportes
ReportesReportes
Reportes
 
Prepared statement
Prepared statementPrepared statement
Prepared statement
 
Control jtable con base de datos
Control jtable con base de datosControl jtable con base de datos
Control jtable con base de datos
 
Resultset
ResultsetResultset
Resultset
 
Statement
StatementStatement
Statement
 
Conecction
ConecctionConecction
Conecction
 
Conecction
ConecctionConecction
Conecction
 
Diapositivas java-con-base-de-datos
Diapositivas java-con-base-de-datosDiapositivas java-con-base-de-datos
Diapositivas java-con-base-de-datos
 
Jdbc
JdbcJdbc
Jdbc
 

Último

Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxPaolaVillalba13
 
CFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCarlos Delgado
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIAMayraOchoa35
 
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRQUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRyanimarca23
 
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdfSEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdffredyflores58
 
trabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidastrabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidasNelsonQuispeQuispitu
 
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptxNayeliZarzosa1
 
Peligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionPeligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionOsdelTacusiPancorbo
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.pptVitobailon
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasSegundo Silva Maguiña
 
Diagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptxDiagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptxHarryArmandoLazaroBa
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónEstacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónAlexisHernandez885688
 
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...esandoval7
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadANDECE
 
Descubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialDescubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialyajhairatapia
 
Electricidad y electronica industrial unidad 1
Electricidad y electronica industrial unidad 1Electricidad y electronica industrial unidad 1
Electricidad y electronica industrial unidad 1victorrodrigues972054
 
produccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxproduccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxEtse9
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCANDECE
 
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...humberto espejo
 

Último (20)

Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptx
 
CFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric Project
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
 
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRQUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
 
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdfSEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdf
 
trabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidastrabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidas
 
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
 
Peligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionPeligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacion
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.ppt
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la Ingenierías
 
Diagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptxDiagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptx
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónEstacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
 
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidad
 
Descubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialDescubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundial
 
Electricidad y electronica industrial unidad 1
Electricidad y electronica industrial unidad 1Electricidad y electronica industrial unidad 1
Electricidad y electronica industrial unidad 1
 
produccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxproduccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptx
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRC
 
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
 

Cursores

  • 1.
  • 2. En SQL Server un cursor puede definirse como 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. .
  • 3. 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 Procedimientos Almacenados (Creación, Modificación y Eliminación) Creación -- Declaracion de variables para el cursor DECLARE @ Id int, @ Nombre varchar(255), @ 1 Apellido varchar(255), @ 2 Apellido varchar(255), @ NifCif varchar(20), @ FxNacimiento datetime -- Declaración del cursor DECLARE cClientes CURSORFOR SELECT Id,Nombre, 1 Apellido , Apellido2,NifCif, FxNacimiento FROM CLIENTES -- Apertura del cursor OPEN cClientes -- Lectura de la primera fila del cursor FETCH cClientes INTO @id, @Nombre, @ 1 Apellido , @ 2 Apellido , @NifCif, @FxNacimiento WHILE (@@ _ FETCH STATUS = 0 ) BEGIN PRINT @ Nombre+' '+ @ 1 Apellido +' '+ @ 2 Apellido -- Lectura de la siguiente fila del cursor FETCH cClientes INTO @id, @Nombre, @ 1 Apellido , @ 2 Apellido , @NifCif, @FxNacimiento END -- Cierre del cursor CLOSE cClientes -- Liberar los recursos DEALLOCATE cClientes
  • 5. Modificación Para actualizar los datos de un cursor debemos especificar FOR UPDATE después de la sentencia SELECT en la declaración del cursor y WHERE CURRENT OF , en la sentencia UPDATE tal y como muestra el siguiente ejemplo: -- Declaración de variables para el cursor DECLARE @ Id int, @ Nombre varchar(255), @ 1 Apellido varchar(255), @ 2 Apellido varchar(255), @ NifCif varchar(20), @ FxNacimiento datetime -- Declaración del cursor DECLARE cClientes CURSORFOR SELECT Id,Nombre, 1 Apellido , Apellido2,NifCif, FxNacimiento FROM CLIENTES FORUPDATE -- Apertura del cursor OPEN cClientes -- Lectura de la primera fila del cursor FETCH cClientes INTO @id, @Nombre, @ 1 Apellido , @ 2 Apellido , @NifCif, @FxNacimiento WHILE (@@ _ FETCH STATUS = 0 ) BEGIN UPDATE Clientes SET 2 APELLIDO = isnull(@ 2 Apellido ,'')+ ' - ' Modificado WHERECURRENT OF cClientes -- Lectura de la siguiente fila del cursor FETCH cClientes INTO @id, @Nombre, @ 1 Apellido , @ 2 Apellido , @NifCif, @FxNacimiento END -- Cierre del cursor CLOSE cClientes -- Liberar los recursos DEALLOCATE cClientes
  • 6. Eliminación: CREATE Procedure DBPSRemoveTest_Sp As Begin DECLARE TEST_CURSOR CURSOR FOR SELECT * FROM Test DECLARE @RetPeriod intDECLARE @AuthId Varchar(50) OPEN TEST_CURSOR FETCH NEXT FROM TEST_CURSOR INTO @RETPERIOD,@AUTHID WHILE@@FETCH_STATUS=0 BEGIN BEGIN delete from test where userid=@RetPeriod and Username=@Authid IF(@@ROWCOUNT=0) PRINT 'Failed to delete the row from the table END FETCH NEXT FROM TEST_CURSOR INTO @RETPERIOD,@AUTHID END CLOSE TEST_CURSOR DEALLOCATE TEST_CURSOR end GO
  • 7. Aprendimos a crear un cursor para la exploración de registro por registro de un conjunto de registros. Este tipo de operación, puede reducir el rendimiento de la aplicación, reducir la concurrencia, disminuir el ancho de banda, bloquear el acceso a recursos, entre otros; es por eso que se debe usar en situaciones muy especiales y prestando particular atención con no afectar el desempeño de la aplicación. CONCLUSIONES