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

Entradas Relacionadas:
  • Cursores con parámetros en PL SQL
  • ORA-01422: Exact fetch returns more than requested number of rows
  • Malditos programas
  • 0 Respuestas a “Cursores en PL SQL (1)”


    1. Ningún Comentario
    1. 1 Cursores con parámetros en PL SQL en El Módem
      Dirección Pingback a 8 Jul, 2008, 3:56 pm
    2. 2 ORA-01422: Exact fetch returns more than requested number of rows en El Módem
      Dirección Pingback a 16 Jul, 2008, 6:34 pm

    Añade un Comentario