SlideShare una empresa de Scribd logo
1
Guía 13 Escuela de
Tecnología
Fundamentos de Base de Datos
TEMA 01 Teoría de los
Tema Nº13:
Introducción a la programación en SQL SERVER IV.
Indicador de logro Nº13:
Implementa cursores para la gestión de datos.
FUNDAMENTOS
DE BASE DE
DATOS.
2
Guía 13 Escuela de
Tecnología
Fundamentos de Base de Datos
TEMA Nº13:
Introducción a la programación en SQL SERVER IV.
Subtema 13.1:
Declaración de cursores, apertura de un cursor, lectura y
recorrido de un cursor, cierre de un cursor y eliminación de
un cursor.
Es como que, si Fuese una tabla, pero se almacena en la memoria de la computadora. Son
usados para almacenar estructuras de datos en la secuencia de un proceso de negocio.
Se recomienda usarlos en las situaciones que amerite el caso.
Son estructuras que se crean en la memoria del ordenador, capaces de albergar gran
cantidad de datos, esto dependerá del tamaño de la memoria RAM o memoria disponible.
Los cursores son muy eficientes para utilizarlos en Job de la base de datos que realicen
alguna operación donde necesitemos modificar alguna información dentro de un bucle. Los
cursores demandan mucho del servidor de base datos, por lo tanto, no es recomendable
abusar del mismo, ya que necesitan bastantes recursos para su ejecución
Un cursor es una herramienta de SQL Server que nos permite recorrer el resultado de una
consulta SQL y realizar operaciones con estos resultados dentro de un bucle de datos.
 Un cursor es una variable que nos permite recorrer con un conjunto de resultados
obtenidos a través de una sentencia SELECTfila por fila.
 El uso de los cursores es una técnica que permite tratar fila por fila el resultado de
una consulta, contrariamente al SELECT SQL que trata a un conjunto de fila.
 Los cursores pueden ser implementador por instrucciones TRANSACT-SQL
(cursores ANSI-SQL) o por la API OLE-DB.
¿Cómo se crea un CURSOR?
 Cuando trabajemos con cursores debemos seguir los siguientes pasos.
o Declarar el cursor, utilizando DECLARE
o Abrir el cursor, utilizando OPEN
o Leer los datos del cursor, utilice FETCH …INTO
o Cerrar el cursor, utilizando CLOSE
o Liberar el cursor, utilizando DEALLOCATE
3
Guía 13 Escuela de
Tecnología
Fundamentos de Base de Datos
ESTRUCTURA DE UN CURSOR:
-- Declaración del cursor
DECLARE <nombre_cursor> CURSOR FOR <sentencia_sql>
-- Apertura del cursor
OPEN <nombre_cursor>
-- Lectura de la primera fila del cursor
FETCH <nombre_cursor> INTO <lista_variables>
WHILE (@@FETCH_STATUS = 0)
BEGIN
-- Procesos …
-- Lectura de la siguiente fila de un cursor
FETCH <nombre_cursor> INTO <lista_variables> ...
END -- Fin del bucle WHILE
-- Cierra el cursor
CLOSE <nombre_cursor>
-- Libera los recursos del cursor
DEALLOCATE <nombre_cursor>
4
Guía 13 Escuela de
Tecnología
Fundamentos de Base de Datos
Subtema 13.2:
Sentencias a emplear: DECLARE CURSOR, OPEN, FETCH-
WHILE, CLOSE, DEALLOCATE.
DECLARACIÓN DE CURSOR
DECLARE [Nombre Cursor] CURSOR FOR <SQL Select, . . . . .>
El primer paso constará de la declaración del cursor, donde se indicarán (junto con
el nombre del cursor) la consulta que el mismo representará y algunas otras
características bastante interesantes.
Un ejemplo de declaración de cursor es el siguiente:
Donde ProdInfo representará al nombre del cursor y la sentencia “SELECT
ProductNumber, Name FROM Producto” será el conjunto de datos del mismo,
como comentamos previamente, es posible en este paso definir algunas
características del comportamiento del cursor, por ejemplo, la sentencia:
DECLARE ProdInfo CURSOR FOR SELECT Name
FROM Producto
Indicará que el cursor será de solo lectura, más adelante veremos en detalle las
opciones disponibles, por el momento nuestro objetivo es crear un cursor lo más
simple posible.
DECLARE ProdInfo CURSOR READ_ONLY FOR
SELECT Name FROM Producto
APERTURA DEL CURSOR
OPEN [nombre de cursor]
La apertura del cursor ejecutará la consulta definida en el paso previo y cargará los
datos en el mismo. La función OPEN de T-SQL permitirá efectuar esta terea, para
continuar con el ejemplo previo la forma de abrir el cursor será la siguiente:
Open ProdInfo
5
Guía 13 Escuela de
Tecnología
Fundamentos de Base de Datos
CIERRE DEL CURSOR
CLOSE [nombre de cursor]
En el cierre del cursor se liberarán los registros tomados por el mismo. Una vez que
el cursor es cerrado ya no podrá recorrerse el conjunto de resultados hasta que el
mismo sea reabierto, la sentencia CLOSE cerrará un cursor abierto y la sintaxis
puede verse a continuación:
Close ProdInfo
RECORRIDO DEL CURSOR Y ACCESO A LOS DATOS
Este paso constará de recorrer los resultados del cursor, la instrucción FETCH
permitirá efectuar dicha operación. Las filas leídas podrán copiarse a variables
utilizando la sentencia INTO en combinación con la sentencia FETCH, por ejemplo,
la sentencia:
FETCH NEXT FROM [nombre de cursor]
FETCH NEXT FROM ProdInfo INTO @Description
Tomará la siguiente fila de resultados del cursor y lo alojará en la variable
@Description.
Un detalle a comentar es que en la sentencia INTO (como puede verse en el
ejemplo anterior) el mapeo entre columnas del cursor y variables se realizará
implícitamente, asignándose la primera columna a la primera variable, la segunda
columna a la segunda variable y así sucesivamente. Esto implica que deberán
crearse tantas variables como columnas se definan en la declaración del cursor y
las mismas deberán ubicarse en el mismo orden que se encuentran definidas las
columnas en la sentencia SELECT de la declaración.
Como cada sentencia FETCH leerá un registro, una pregunta interesante que
podríamos hacernos es, ¿de qué manera podremos saber si existe un próximo o
previo registro, o si hemos llegado al límite (ya sea superior o inferior)?. La
respuesta se encontrará en una variable de SQL Server llamada
@@FETCH_STATUS que tomará el valor 0 si la lectura del registro ha sido
correcta.
6
Guía 13 Escuela de
Tecnología
Fundamentos de Base de Datos
En este punto será también posible modificar o eliminar las filas que se van
recorriendo, como veremos al final del artículo.
LEER EL CURSOR
Gracias a este bucle, se podrán leer todas las filas del cursor.
WHILE (@@FETCH_STATUS=0)
BEGIN
. . . . . .
FETCH NEXT FROM [Nombre del Cursor]
END
DESHACER o DESALOJAR EL CURSOR
DEALLOCATE Nombre de Cursor
DEALLOCATE ProdInfo
Este paso eliminará la referencia al cursor definido previamente, por lo que ya no
será posible realizar una reapertura del mismo.
Uso de Cursores, se tiene la siguiente tabla:
7
Guía 13 Escuela de
Tecnología
Fundamentos de Base de Datos
Cuyos datos son los siguientes:
Puede descargar el Script de base de datos SEMANA13_01.sql.
EJEMPLO 01:
Crear un cursor el cual muestre el título del libro y su respectivo precio, y en una
columna separada el precio aumentado en 10 soles más, de aquellos libros que
pertenezcan al área ‘LPROG’ para ellos debe contar con la siguiente tabla de la base de
datos LIBRERÍA.
SOLUCIÓN: este código debe ser ejecutado en una sola selección.
RESULTADO DE LA EJECUIÓN DEL CURSOR:
8
Guía 13 Escuela de
Tecnología
Fundamentos de Base de Datos
EJEMPLO 02:
Mediante un cursor obtener una copia de seguridad de
todos los datos de la tabla libro, para ellos debe contar
con una nueva tabla con la misma estructura de la tabla
libro, con el nombre LIBRO_BACKUP (agregar esta
nueva tabla a la base de datos).
SOLUCIÓN:
Ejecute este código en una sola selección.
Verificar en la tabla LIBRO_BACKUP
Los datos de la tabla LIBRO han pasado a la tabla LIBRO_BACKUP.
9
Guía 13 Escuela de
Tecnología
Fundamentos de Base de Datos
EJEMPLO 03:
He aquí un ejemplo del cursor de Simple script de copia de seguridad las bases de datos
de SQL Server en que se expidan copias de seguridad de manera serial:
SOLUCIÓN:
Para que el código funcione, debe crear una carpeta en el disco C: con el nombre Backup,
es decir: C:Backup.
AL EJECUTAR EL CODIGO, COMO RESULTADO DEBERÁ OBTENER LOS
SIGUIENTE:
Y EN EL DISCO C:
Se observa la copia de seguridad de la base datos que estamos usando.
10
Guía 13 Escuela de
Tecnología
Fundamentos de Base de Datos
EJEMPLO 4:
Se pide crear un cursor que sea capaz de mostrar los pedidos realizados, según la tabla
CABECERA_PEDIDO este tiene 3 pedidos los cuales son: ‘00001’, ‘00002’ y ‘00003’, para
ello se debe ingresar el número del pedido (ALMACENAR EN UNA VARIABLE), por
intermedio de variables, y brindar la información solicitada, tal como se muestran en las
siguientes imágenes
Para realizar este ejercicio, se debe contar con el siguiente modelo relacional:
EL script de base de datos se encuentra en el archivo SEMANA12_02.sql
SOLUCIÓN:
11
Guía 13 Escuela de
Tecnología
Fundamentos de Base de Datos
Al ejecutar el código, como resultado obtendrá lo siguiente:
12
Guía 13 Escuela de
Tecnología
Fundamentos de Base de Datos
CONCLUSIONES Y RECOMENDACIONES DE LA EXPERIENCIA
 Un cursor es una estructura utilizada para el recorrido de los registros que es el
resultado de una consulta.
 Un cursor se utiliza para el procesamiento individual de las filas devueltas por el
sistema gestor de base de datos para una consulta.
 Un cursor se declara, se abre, lee, recorre, se cierra y se libera de memoria.
 @@FetchStatus es una variable global que devuelve un valor que representa el
estado del cursor. El valor correcto es 0.
ACTIVIDAD VIRTUAL
Analizar y revisar detenidamente este recurso de aprendizaje y luego responde las
preguntas propuestas.
 ¿Qué es un Cursor?
 Importancia de los cursores en las bases de datos.
 Se tiene el siguiente modelo relacional:
 Descargar y ejecutar el script de base de datos llamado Semana12_03.sql y
proceda a realizar los siguientes cursores:
o Obtener el Libro, con el precio más caro.
o Obtener los sueldos acumulados según el género del trabajador.
o Obtener el total acumulado en precios según el área del libro.
o Listado general de Libros.
o Listado general de trabajadores.
o Mediante el género, lista a los trabajadores y la sumatoria de los sueldos
como resultado de resumen.
o Mediante el área del libro, se pide mostrar los libros y la sumatoria de los
precios, como resultado de resumen.

Más contenido relacionado

PPTX
5-cursores-18050415fhdhdhdhdh5828 (2).pptx
PPTX
Cursores
PPTX
SESION-07.pptx
PPTX
Sesion 13-c#
5-cursores-18050415fhdhdhdhdh5828 (2).pptx
Cursores
SESION-07.pptx
Sesion 13-c#

Similar a 13 Guía_Fundamentos de Base de Datos.docx (20)

PPT
Cursores
DOCX
8 Guía_Fundamentos de Base de Datos (2).docx
PPTX
Resumen fundamentos de sistemas de bases de datos
PPTX
cursores
DOCX
PDF
Proyecto 2 Bases de Datos
PDF
guia-2.pdf
DOCX
Sesion08 - Cursores (Oracle)
PDF
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
PPTX
Database fundamental itprosdc_chapter2
PDF
Tema3
PDF
TODO SOBRE SQL
PDF
Base de datos
PPT
7090112 Clase Transact Sql Server
PPTX
Presentation Introduction to Databases and its Organization
PDF
Presentación1
PPTX
PPT
Semana 5 y 6 cursores implícitos y explícitos
PPTX
Lenguaje transact sql
Cursores
8 Guía_Fundamentos de Base de Datos (2).docx
Resumen fundamentos de sistemas de bases de datos
cursores
Proyecto 2 Bases de Datos
guia-2.pdf
Sesion08 - Cursores (Oracle)
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
Database fundamental itprosdc_chapter2
Tema3
TODO SOBRE SQL
Base de datos
7090112 Clase Transact Sql Server
Presentation Introduction to Databases and its Organization
Presentación1
Semana 5 y 6 cursores implícitos y explícitos
Lenguaje transact sql
Publicidad

Más de LeydyVeronicaDelgado (20)

PPTX
12_Matemática aplicada_Planteamiento y resolución de problemas con ecuaciones...
DOCX
Crear un nuevo usuario.docx
DOCX
10 Guía_Fundamentos de Base de Datos.docx
PPTX
EC3 - PLANTILLA.pptx
PPTX
Plantilla-IDAT.pptx
PDF
3573-Manuscrito-15781-1-10-20181128.pdf
DOCX
Guia de laboratorio - Configuracion de la red.docx
PDF
3573-Manuscrito-15781-1-10-20181128 (1).pdf
PDF
10_SESION_10.pdf
PPTX
Tema 10 - Manejo de Archivos de texto.pptx
DOCX
Tarea 9.docx
PPTX
Controlar la adiccion al Smartphone.pptx
DOCX
FPIPS-106 Modelo de Requerimientos.docx
PPTX
FF0319-01-business-organic-powerpoint-template.pptx
PPT
actividad2-diagrama-de-casos-de-uso-del-negocio-y-del-sistema.ppt
PDF
FPIPS_104_Modelo_de_Casos_de_Uso_de_Negocio_MCUN_tarea_00.docx.pdf
PDF
Prueba de conocimiento (1).pdf
PPTX
Controlar la adiccion al Smartphone (1).pptx
PPTX
Scrum- Historias y criterios.pptx
DOCX
EF_Comunicacion.docx
12_Matemática aplicada_Planteamiento y resolución de problemas con ecuaciones...
Crear un nuevo usuario.docx
10 Guía_Fundamentos de Base de Datos.docx
EC3 - PLANTILLA.pptx
Plantilla-IDAT.pptx
3573-Manuscrito-15781-1-10-20181128.pdf
Guia de laboratorio - Configuracion de la red.docx
3573-Manuscrito-15781-1-10-20181128 (1).pdf
10_SESION_10.pdf
Tema 10 - Manejo de Archivos de texto.pptx
Tarea 9.docx
Controlar la adiccion al Smartphone.pptx
FPIPS-106 Modelo de Requerimientos.docx
FF0319-01-business-organic-powerpoint-template.pptx
actividad2-diagrama-de-casos-de-uso-del-negocio-y-del-sistema.ppt
FPIPS_104_Modelo_de_Casos_de_Uso_de_Negocio_MCUN_tarea_00.docx.pdf
Prueba de conocimiento (1).pdf
Controlar la adiccion al Smartphone (1).pptx
Scrum- Historias y criterios.pptx
EF_Comunicacion.docx
Publicidad

Último (20)

PPTX
DDHH MUJERES (1).pptx LOS DERECHOS HUNMANOS DE LAS MUJERES
DOCX
Bloque 3 - ETICA PROFESIONAL.doccccccccx
PDF
Procedimientos Civiles relativos a los derechos de familia y al estado de las...
PDF
PROCEDIMIENTO ADMINISTRATIVO GENERAL - AUTOR JOSÉ MARÍA PACORI CARI
PPTX
8.- Recursos retóricos de la argumentación (7).pptx
PPTX
§ 1.2 - Fundamento y fines de la pena (S.Garcia).pptx
PDF
Contrato Mercantil de Fideicomiso en el Derecho de Honduras
PDF
GESTIÓN PÚBLICA CONTRALORÍA - AUTOR JOSÉ MARÍA PACORI CARI
PDF
(3) Responsabilidad Civil_a1fbf8086a4f0e1e3f318db6869e2f8b.pdf
PPTX
Relación de consumo en el derecho del usuario y consumidor
PDF
EL ANALISIS DELICTUAL EN LOS FUNCIONARIOS POLICIALES.pdf
PDF
COMPENDIO DE DERECHO CONSTITUCIONAL - GERMAN J. BIDART CAMPOS.pdf
PPTX
SESION DERECHO DE LOS CONTRATOS JURIDICOS.pptx
PDF
Unidad 1 Tema 4. Jurisdiccion Parte II.pdf
PDF
jurisprudencia sobre descuento al salario
PDF
SIDH sistema interamericano DDHH 2025 1ra parte - compartido.pdf
PPTX
Teoría de la Culpa en el derecho penal chileno.pptx
DOCX
MEDIOS ALTERNATIVOS 2.docx ccccccccccccc
PPTX
HÁBEAS CORPUS FINAL definitivo sexto.pptx
PPTX
Derechos Humanos-Desigualdades-ODS..pptx
DDHH MUJERES (1).pptx LOS DERECHOS HUNMANOS DE LAS MUJERES
Bloque 3 - ETICA PROFESIONAL.doccccccccx
Procedimientos Civiles relativos a los derechos de familia y al estado de las...
PROCEDIMIENTO ADMINISTRATIVO GENERAL - AUTOR JOSÉ MARÍA PACORI CARI
8.- Recursos retóricos de la argumentación (7).pptx
§ 1.2 - Fundamento y fines de la pena (S.Garcia).pptx
Contrato Mercantil de Fideicomiso en el Derecho de Honduras
GESTIÓN PÚBLICA CONTRALORÍA - AUTOR JOSÉ MARÍA PACORI CARI
(3) Responsabilidad Civil_a1fbf8086a4f0e1e3f318db6869e2f8b.pdf
Relación de consumo en el derecho del usuario y consumidor
EL ANALISIS DELICTUAL EN LOS FUNCIONARIOS POLICIALES.pdf
COMPENDIO DE DERECHO CONSTITUCIONAL - GERMAN J. BIDART CAMPOS.pdf
SESION DERECHO DE LOS CONTRATOS JURIDICOS.pptx
Unidad 1 Tema 4. Jurisdiccion Parte II.pdf
jurisprudencia sobre descuento al salario
SIDH sistema interamericano DDHH 2025 1ra parte - compartido.pdf
Teoría de la Culpa en el derecho penal chileno.pptx
MEDIOS ALTERNATIVOS 2.docx ccccccccccccc
HÁBEAS CORPUS FINAL definitivo sexto.pptx
Derechos Humanos-Desigualdades-ODS..pptx

13 Guía_Fundamentos de Base de Datos.docx

  • 1. 1 Guía 13 Escuela de Tecnología Fundamentos de Base de Datos TEMA 01 Teoría de los Tema Nº13: Introducción a la programación en SQL SERVER IV. Indicador de logro Nº13: Implementa cursores para la gestión de datos. FUNDAMENTOS DE BASE DE DATOS.
  • 2. 2 Guía 13 Escuela de Tecnología Fundamentos de Base de Datos TEMA Nº13: Introducción a la programación en SQL SERVER IV. Subtema 13.1: Declaración de cursores, apertura de un cursor, lectura y recorrido de un cursor, cierre de un cursor y eliminación de un cursor. Es como que, si Fuese una tabla, pero se almacena en la memoria de la computadora. Son usados para almacenar estructuras de datos en la secuencia de un proceso de negocio. Se recomienda usarlos en las situaciones que amerite el caso. Son estructuras que se crean en la memoria del ordenador, capaces de albergar gran cantidad de datos, esto dependerá del tamaño de la memoria RAM o memoria disponible. Los cursores son muy eficientes para utilizarlos en Job de la base de datos que realicen alguna operación donde necesitemos modificar alguna información dentro de un bucle. Los cursores demandan mucho del servidor de base datos, por lo tanto, no es recomendable abusar del mismo, ya que necesitan bastantes recursos para su ejecución Un cursor es una herramienta de SQL Server que nos permite recorrer el resultado de una consulta SQL y realizar operaciones con estos resultados dentro de un bucle de datos.  Un cursor es una variable que nos permite recorrer con un conjunto de resultados obtenidos a través de una sentencia SELECTfila por fila.  El uso de los cursores es una técnica que permite tratar fila por fila el resultado de una consulta, contrariamente al SELECT SQL que trata a un conjunto de fila.  Los cursores pueden ser implementador por instrucciones TRANSACT-SQL (cursores ANSI-SQL) o por la API OLE-DB. ¿Cómo se crea un CURSOR?  Cuando trabajemos con cursores debemos seguir los siguientes pasos. o Declarar el cursor, utilizando DECLARE o Abrir el cursor, utilizando OPEN o Leer los datos del cursor, utilice FETCH …INTO o Cerrar el cursor, utilizando CLOSE o Liberar el cursor, utilizando DEALLOCATE
  • 3. 3 Guía 13 Escuela de Tecnología Fundamentos de Base de Datos ESTRUCTURA DE UN CURSOR: -- Declaración del cursor DECLARE <nombre_cursor> CURSOR FOR <sentencia_sql> -- Apertura del cursor OPEN <nombre_cursor> -- Lectura de la primera fila del cursor FETCH <nombre_cursor> INTO <lista_variables> WHILE (@@FETCH_STATUS = 0) BEGIN -- Procesos … -- Lectura de la siguiente fila de un cursor FETCH <nombre_cursor> INTO <lista_variables> ... END -- Fin del bucle WHILE -- Cierra el cursor CLOSE <nombre_cursor> -- Libera los recursos del cursor DEALLOCATE <nombre_cursor>
  • 4. 4 Guía 13 Escuela de Tecnología Fundamentos de Base de Datos Subtema 13.2: Sentencias a emplear: DECLARE CURSOR, OPEN, FETCH- WHILE, CLOSE, DEALLOCATE. DECLARACIÓN DE CURSOR DECLARE [Nombre Cursor] CURSOR FOR <SQL Select, . . . . .> El primer paso constará de la declaración del cursor, donde se indicarán (junto con el nombre del cursor) la consulta que el mismo representará y algunas otras características bastante interesantes. Un ejemplo de declaración de cursor es el siguiente: Donde ProdInfo representará al nombre del cursor y la sentencia “SELECT ProductNumber, Name FROM Producto” será el conjunto de datos del mismo, como comentamos previamente, es posible en este paso definir algunas características del comportamiento del cursor, por ejemplo, la sentencia: DECLARE ProdInfo CURSOR FOR SELECT Name FROM Producto Indicará que el cursor será de solo lectura, más adelante veremos en detalle las opciones disponibles, por el momento nuestro objetivo es crear un cursor lo más simple posible. DECLARE ProdInfo CURSOR READ_ONLY FOR SELECT Name FROM Producto APERTURA DEL CURSOR OPEN [nombre de cursor] La apertura del cursor ejecutará la consulta definida en el paso previo y cargará los datos en el mismo. La función OPEN de T-SQL permitirá efectuar esta terea, para continuar con el ejemplo previo la forma de abrir el cursor será la siguiente: Open ProdInfo
  • 5. 5 Guía 13 Escuela de Tecnología Fundamentos de Base de Datos CIERRE DEL CURSOR CLOSE [nombre de cursor] En el cierre del cursor se liberarán los registros tomados por el mismo. Una vez que el cursor es cerrado ya no podrá recorrerse el conjunto de resultados hasta que el mismo sea reabierto, la sentencia CLOSE cerrará un cursor abierto y la sintaxis puede verse a continuación: Close ProdInfo RECORRIDO DEL CURSOR Y ACCESO A LOS DATOS Este paso constará de recorrer los resultados del cursor, la instrucción FETCH permitirá efectuar dicha operación. Las filas leídas podrán copiarse a variables utilizando la sentencia INTO en combinación con la sentencia FETCH, por ejemplo, la sentencia: FETCH NEXT FROM [nombre de cursor] FETCH NEXT FROM ProdInfo INTO @Description Tomará la siguiente fila de resultados del cursor y lo alojará en la variable @Description. Un detalle a comentar es que en la sentencia INTO (como puede verse en el ejemplo anterior) el mapeo entre columnas del cursor y variables se realizará implícitamente, asignándose la primera columna a la primera variable, la segunda columna a la segunda variable y así sucesivamente. Esto implica que deberán crearse tantas variables como columnas se definan en la declaración del cursor y las mismas deberán ubicarse en el mismo orden que se encuentran definidas las columnas en la sentencia SELECT de la declaración. Como cada sentencia FETCH leerá un registro, una pregunta interesante que podríamos hacernos es, ¿de qué manera podremos saber si existe un próximo o previo registro, o si hemos llegado al límite (ya sea superior o inferior)?. La respuesta se encontrará en una variable de SQL Server llamada @@FETCH_STATUS que tomará el valor 0 si la lectura del registro ha sido correcta.
  • 6. 6 Guía 13 Escuela de Tecnología Fundamentos de Base de Datos En este punto será también posible modificar o eliminar las filas que se van recorriendo, como veremos al final del artículo. LEER EL CURSOR Gracias a este bucle, se podrán leer todas las filas del cursor. WHILE (@@FETCH_STATUS=0) BEGIN . . . . . . FETCH NEXT FROM [Nombre del Cursor] END DESHACER o DESALOJAR EL CURSOR DEALLOCATE Nombre de Cursor DEALLOCATE ProdInfo Este paso eliminará la referencia al cursor definido previamente, por lo que ya no será posible realizar una reapertura del mismo. Uso de Cursores, se tiene la siguiente tabla:
  • 7. 7 Guía 13 Escuela de Tecnología Fundamentos de Base de Datos Cuyos datos son los siguientes: Puede descargar el Script de base de datos SEMANA13_01.sql. EJEMPLO 01: Crear un cursor el cual muestre el título del libro y su respectivo precio, y en una columna separada el precio aumentado en 10 soles más, de aquellos libros que pertenezcan al área ‘LPROG’ para ellos debe contar con la siguiente tabla de la base de datos LIBRERÍA. SOLUCIÓN: este código debe ser ejecutado en una sola selección. RESULTADO DE LA EJECUIÓN DEL CURSOR:
  • 8. 8 Guía 13 Escuela de Tecnología Fundamentos de Base de Datos EJEMPLO 02: Mediante un cursor obtener una copia de seguridad de todos los datos de la tabla libro, para ellos debe contar con una nueva tabla con la misma estructura de la tabla libro, con el nombre LIBRO_BACKUP (agregar esta nueva tabla a la base de datos). SOLUCIÓN: Ejecute este código en una sola selección. Verificar en la tabla LIBRO_BACKUP Los datos de la tabla LIBRO han pasado a la tabla LIBRO_BACKUP.
  • 9. 9 Guía 13 Escuela de Tecnología Fundamentos de Base de Datos EJEMPLO 03: He aquí un ejemplo del cursor de Simple script de copia de seguridad las bases de datos de SQL Server en que se expidan copias de seguridad de manera serial: SOLUCIÓN: Para que el código funcione, debe crear una carpeta en el disco C: con el nombre Backup, es decir: C:Backup. AL EJECUTAR EL CODIGO, COMO RESULTADO DEBERÁ OBTENER LOS SIGUIENTE: Y EN EL DISCO C: Se observa la copia de seguridad de la base datos que estamos usando.
  • 10. 10 Guía 13 Escuela de Tecnología Fundamentos de Base de Datos EJEMPLO 4: Se pide crear un cursor que sea capaz de mostrar los pedidos realizados, según la tabla CABECERA_PEDIDO este tiene 3 pedidos los cuales son: ‘00001’, ‘00002’ y ‘00003’, para ello se debe ingresar el número del pedido (ALMACENAR EN UNA VARIABLE), por intermedio de variables, y brindar la información solicitada, tal como se muestran en las siguientes imágenes Para realizar este ejercicio, se debe contar con el siguiente modelo relacional: EL script de base de datos se encuentra en el archivo SEMANA12_02.sql SOLUCIÓN:
  • 11. 11 Guía 13 Escuela de Tecnología Fundamentos de Base de Datos Al ejecutar el código, como resultado obtendrá lo siguiente:
  • 12. 12 Guía 13 Escuela de Tecnología Fundamentos de Base de Datos CONCLUSIONES Y RECOMENDACIONES DE LA EXPERIENCIA  Un cursor es una estructura utilizada para el recorrido de los registros que es el resultado de una consulta.  Un cursor se utiliza para el procesamiento individual de las filas devueltas por el sistema gestor de base de datos para una consulta.  Un cursor se declara, se abre, lee, recorre, se cierra y se libera de memoria.  @@FetchStatus es una variable global que devuelve un valor que representa el estado del cursor. El valor correcto es 0. ACTIVIDAD VIRTUAL Analizar y revisar detenidamente este recurso de aprendizaje y luego responde las preguntas propuestas.  ¿Qué es un Cursor?  Importancia de los cursores en las bases de datos.  Se tiene el siguiente modelo relacional:  Descargar y ejecutar el script de base de datos llamado Semana12_03.sql y proceda a realizar los siguientes cursores: o Obtener el Libro, con el precio más caro. o Obtener los sueldos acumulados según el género del trabajador. o Obtener el total acumulado en precios según el área del libro. o Listado general de Libros. o Listado general de trabajadores. o Mediante el género, lista a los trabajadores y la sumatoria de los sueldos como resultado de resumen. o Mediante el área del libro, se pide mostrar los libros y la sumatoria de los precios, como resultado de resumen.