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