Cursores en PL SQL (1)

Los cursores son estructuras que se pueden utilizar cuando queremos almacenar los resultados de un SELECT que devuelve varias filas.

Son sencillos de implementar pero tienen algunas desventajas: si agregamos posteriormente columnas al SELECT, tendremos que agregarlas en cada lugar en donde hagamos un FETCH del cursor (lo que complica las cosas cuando se tienen un stored procedure que es el que llena el cursor y es llamado desde varios sitios).

Un ejemplo de uso de cursores:

PLSQL:
  1.    TYPE TYPCUR IS REF CURSOR;
  2.    wc_cursor        TYPCUR;
  3.    w_columna1     t_tabla.columna1%TYPE;
  4.    w_columna2     t_tabla.columna2%TYPE;
  5.    --Definimos el query con el que se llenará el cursor y abrimos el cursor
  6.    OPEN wc_cursor FOR
  7.       SELECT t.columna1, t.columna2
  8.         FROM t_tabla t;
  9.    --Recorremos el cursor en un loop
  10.    LOOP
  11.       --Obtenemos una fila del cursor
  12.       FETCH wc_cursor INTO w_columna1, w_columna2;
  13.       -- salimos del loop cuando el cursor está vacío
  14.       EXIT WHEN wc_cursor%NOTFOUND;
  15.       DBMS_OUTPUT.put_line('w_columna1: '||w_columna1);
  16.       DBMS_OUTPUT.put_line('w_columna2: '||w_columna2);
  17.    END LOOP;
  18.    --Cerramos el cursor
  19.    IF wc_cursor%ISOPEN THEN
  20.       CLOSE wc_cursor;
  21.    END IF;
  22.       DBMS_OUTPUT.put_line('Error: '||SQLERRM);
  23. END;

En un próximo post: uso de cursores con parámetros

One Comentario

  1. carllojan
    Comentado Noviembre 24, 2009 a las 8:07 am | Permalink

    hola quiciera me ayudaran, necesito ver los resultados de un cursor e buscado por todos lados y nada funciona o si no de puede pues por lo menos guardar los resultados en un archivo .txt de antemano muchas gracias y espero me puedan ayudar

2 Trackbacks

  1. Por Cursores con parámetros en PL SQL en El Módem en Julio 8, 2008 a las 3:56 pm

    [...] una anterior entrada mostraba cómo manejar cursores en PL SQL, ahora veremos cómo manejar cursores con [...]

  2. [...] recomendable, si es que existe la posibilidad de obtener más de una fila, se deben usar cursores o [...]

Escribe un Comentario

Su correo nunca será publicado ni compartido. Los campos requeridos están marcados *

*
*
CC 2009 El Módem. Some rights reserved.