Cursor Implícito: for/in select para recorrer directamente los resultados de una consulta en Oracle con PL/SQL

Higarigaoka - Odaiba, Sin comentarios
Hola,

A continuación les comparto un Procedimiento Anónimo, en el cual se utiliza un cursor implícito: for/in - select para recorrer directamente los resultados de la consulta SQL que se le defina y así obtener en tiempo de ejecución los resultados de la consulta:

DECLARE

    --declaracion de variables e inicializacion
    vnu_cont NUMBER := 0;
    l_Errores Type_1;
    Ci_consulta Type_Array := New Type_Array();

BEGIN

    SELECT COUNT(*)
    INTO vnu_cont
    FROM personas per
    WHERE per.numeroDocumento = 12345
    AND per.tipoDocumento = 'CC';

    --validar que si se encontraron registros en la tabla personas
    IF vnu_cont > 0 THEN

        --cursor implicito: for/in select - para recorrer directamente los resultados de la consulta
        FOR resultadoConsulta IN (
                                  SELECT dpto.codigo, dpto.ciudad
                                  FROM departamentos dpto
                                  WHERE dpto.nombre = 'BARCELONA'
                                 )
        LOOP

         --se setea en la lista el control tecnico, uno a uno
      l_Errores := Type_1(resultadoConsulta. codigo, resultadoConsulta. ciudad);

        --se agrega un elemento nulo a la (Coleccion, tabla anidada o VARRAYs)
         Ci_consulta.Extend;

         --se adiciona el resultado individual obtenido de la consulta, al array del type principal
         Ci_consulta(Ci_consulta.COUNT) := l_Errores;

        END LOOP;

        DBMS_OUTPUT.PUT_LINE('***Bienvenido***');
    DBMS_OUTPUT.PUT_LINE('El tamaño de la coleccion es: ' || Ci_consulta.COUNT);

    END IF;

END;

Si de pronto quieren crearlo como un procedimiento almacenado, en vez de DECLARE al inicio, colocan lo siguiente:

CREATE OR REPLACE PROCEDURE nombre_Procedimiento_Almacenado
    IS

Listo, eso es todo.

Basado en:

0 comentarios :

Publicar un comentario