domingo, 24 de julio de 2016

Que son y como funcionan los Cursores SQL

Este va a ser un sencillo post sobre que son los cursores SQL y su funcionamiento. 

Para empezar comentaremos que hay dos tipos de cursores: Implícitos y explícitos.

Los implícitos tienen las siguientes características:
  • No necesitan una declaración específica.
  • Son aquellos cursores que permiten almacenar una única variable.
  • Es necesaria la clausula INTO para almacenar el valor deseado.
  • La variable debe ser del mismo tipo que el valor a retener.
  • Comúnmente utilizados en los PL/SQL para almacenar valores a utilizar posteriormente.

declare
  vNombre VARCHAR2(50);
begin
  SELECT NOMBRE INTO vNombre from FICHEROS WHERE ID_FICHERO = 123456;
  dbms_output.put_line('El nombre es: ' || vNombre);
end;

Los explícitos son algo más complejos. Las principales características son:
  • Necesitan una declaración específica antes de poder utilizarlos. 
  • Permiten el almacenamiento de más de una variable en una estructura reutilizable. 
  • Permiten parámetros de entrada para filtrar los resultados devueltos.
A continuación mostraremos un ejemplo de como declararlos y utilizarlos:


procedure createArticuloAlbaran (idAlbaran in VARCHAR2, idArticulo in VARCHAR2, resultado out RESULTADO_TYPE)
 is
 CURSOR CUR_PROPIO(idArt VARCHAR2) IS
  SELECT A.PRECIO AS PRECIO, A.CANTIDAD AS CANTIDAD
        FROM ARTICULOS A
        WHERE A.IDARTICULO = idArt; 

        BEGIN
  FOR REGISTRO_CUR IN CUR_PROPIO(idArticulo) LOOP
   INSERT INTO ALBARANES(IDALBARAN, IDARTICULO, PRECIO, CANTIDAD)
   VALUES(idAlbaran, idArticulo, REGISTRO_CUR.PRECIO, REGISTRO_CUR.CANTIDAD );
  END LOOP;
  COMMIT;
 end createArticuloAlbaran;

No hay comentarios:

Publicar un comentario