Ir al contenido principal

CURSOR EN SQL SERVER 2000

Primero  voy a colocar las instrucciones/variables importates relacionadas con este tema que se utilizan y descripción de las mismas:

 Declare nombre_cursor  for: sirve para declarar el cursor y hacer referencia sobre que consulta se realiza

Open nombre_cursor: sirve para iniciar el trabajo sobre el cursor que se desea operar

fetch next from nombre_cursor: sirve para correr un registro dentro del cursor 

@@Fetch_status: indica el resultado de la ultima instrucción fetch realizada; 0 indica que todo funciono correctamente, -1 existió un error, -2 la fila captura no esta

Close  nombre_cursor: cierra el trabajo sobre el cursor que se esta operando

Deallocate nombre_cursor:  quita la referencia del nombre de cursor al  cursor mencionado, cuando la ultima referencia la cursor a sido quitada el manejador de sql liberan los recursos asociados 

Ejemplo:
En el siguiente ejemplo se tiene una tabla llamada "Tabla" la cual contiene campos Registro, año y nombre_tabla. Que previamente se habían creado y cargado con datos de años anteriores, para el año 2012 se actualizaron y se crearon los registros correspondientes y este cursor actualiza el nombre de la tabla para estos registros.

--variables donde guardo los resultados de la consulta
declare @numid as  numeric
declare @tabla as varchar(250)

--declaracion de la tabla que se utiliza
   Declare modTabla cursor for
         select distinct Registro,nombre_tabla  from  Tabla
         where anio <2012

--declaracion del cursor que se utiliza
   Open modTabla
      --inicio el recorrido del cursor
         fetch next from modTabla
           into @numid,@tabla --le indico que el resultado lo guarde en estas variables
           while @@fetch_status =0 --mientras todo se ejecuta de manera correcta
           begin --inicia el cursor
           --realizamos los cambios correspondientes  
           Update Tabla
                set nombre_tabla = @tabla
             where registro=@numid
                and anio=2012

           --avanzamos otro registro
            fetch next from modTabla
              into @numid,@tabla
                 
           End --finaliza el cursor
   --se cierrra el cursor
       close modTabla
  --se desliga el nombre del cursor con el cursor  para que el manejador libere los recursos
       deallocate  modTabla


Cuando utilizar cursores

Los cursores son una herramienta que provee la mayoría de maneja dores de base de datos, criticados por algunos y muy utilizados por otros, como toda herramienta informática tiene ventajas y desventajas, algunos afirman que todo lo que se hace por cursores puede hacerse mediante otra técnica y que en ocasiones es mejor utilizar tablas temporales otros que es mejor usar cursores. Definitivamente existen procedimientos que se hace mas fácil utilizar cursores para su desarrollo pero puede verse afectado el rendimiento de la base de datos entonces cuando recomendaría usar cursores algunos pueden estar en desacuerdo.

Cuando te piden un reporte urgente.
Si  el jefe llega y dice quiero un reporte de "··$"%·$%"  dentro de una hora se puede evitar un poco perder tiempo en la programación utilizar un cursor y listo (si se tarda se puede echar la culpa al manejador de  base de datos ;p)

Cuando no hay muchos registros.
En algún reporte que no implique revisar  mas de 150 o 200 tuplas se puede recurrir  a un cursor, siempre y cuando lo que se desea hacer dentro del cursor  no es muy complicado de otra manera se puede afectar el rendimiento de la base de datos.

Para una acción aislada
Se necesita actualizar algo por algún  motivo fuera de lo común  por alguna razón especial en este caso hacer una actualización por cambio de año, creo se puede recurrir, con la salvedad que para tablas que no tengan demasiadas tuplas en sistemas críticos, en horas criticas por razones mas que evidentes.

En fin los cursores son una herramienta que disminuye la pensada al momento de realizar un procedimiento y es de analizar si conviene utilizarla o no  ya sea por rendimiento o por que no das mas para implementar una mejor forma







Comentarios

Entradas populares de este blog

DISEÑO AL NIVEL DE COMPONENTES

El diseño a nivel de componentes se presenta a menudo despues que se ha terminado la primera iteracion del diseño arquitectonico. y  el objetivo de esta fase es traducir el diseño en software operaciona. El diseño a nivel de componentes define las estructuras de datos, los algoritmos, las caracteristicas de la interfaz  y los mecanismos de comunicacion asignados a cada componente de software. esta fase permite revisar si los detalles de diseño son correctos y consistentes con las representaciones iniciales de diseño ¿QUE ES UN COMPONENTE? Es un bloque de construccion modular par el software de computo. una parte modular desplegable y reemplazable de un sistema que encapsula implementacion y expone un conjunto de interfaces. desde el punto de vista orientado a objetos un componente es un conjunto de clases ques se interrelacionan entre si. en el contexto convencional de ingenieria de software  un componente es un elemento funcional que incorpora  la logica del procesamiento y

ESTRATEGIAS DE PRUEBAS DE SOFTWARE

La estrategia de pruebas de software proporciona un mapa que describe los pasos que se daran como parte de la prueba indica cuando se planea y cuando se daran dichos pasos ademas cuanto tiempo, esfuerzo y recursos consumiran. un software se prueba para descubrir los errores cometidos, si se realiza sin ningun plan seguramente se desperdiciara tiempo, se dedicara un esfuerzo innecesario y lo que es peor puede que no se detecten los errores. Las pruebas se deben planificar con anticipacion y realizarlas de manera sistematica por lo que es importante tener una plantilla existen diferentes y en general tienen los siguientes pasos. 1. Revisiones tecnicas formales y efectivas 2. Se inicia a nivel de componentes y se trabaja hacia afuera hacia la integracion del sistema 3. Diferentes tecnicas en diferentes momentos 4. las pruebas las dirige el desarrollador 5. la prueba y la depuracion son actividades diferentes, pero la segunda debe incluirse en cualquier estrategia de pruebas. l

AGE OF EMPIRES ERROR INICIALIZAR DIRECT 3D

Instale age of empires 3 pero no me corria me salia un mensaje de error al inicializar posibles causas direct 3d y otras que no me acuerdo la solucion luego de buscar: abrir el archivo mis documentos\my games\Age of empires 3\users\NewProfile.xml en block de notas setting name="optiongrfxres">etting Name="optiongrfxres">1280 x 720 colocar los parametros en la configuarcion que tiene el ordenador en mi caso es wide screen 1280 X 720 Setting Name="optionrefreshrate">75 esta configuracion se mira en inicio > panel de control > apariencia y temas >pantalla lengeta configuarcion > boton opciones avanzadas lengueta adaptador > boton listar modos alli colocas el modo que queres y lo pones en el archivo newProfile.xml