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