Se deja un ejemplo de como pasar parametros a un cursor.
Este ejemplo saca de la base de datos todas las tablas y sus columnas.
DECLARE
vPropietario all_tables.owner%TYPE;
vNombreTabla all_tables.owner%TYPE;
vNombreColumna all_tab_columns.table_name%TYPE;
cursor obtieneTablas(pPropietario2 all_tables.owner%TYPE) is
select distinct t.owner, t.table_name
from all_tables t
where t.owner = pPropietario2;
/* Segundo cursor */
cursor obtieneColumnas(pPropietario all_tab_columns.column_name%TYPE, pNameTable all_tab_columns.table_name%TYPE) is
select distinct c.column_name
from all_tab_columns c
where c.owner = pPropietario
and c.table_name = pNameTable;
begin
vPropietario:='SYSTEM';
open obtieneTablas(vPropietario);
loop fetch obtieneTablas into vPropietario, vNombreTabla;
exit when obtieneTablas%NOTFOUND;
dbms_output.put_line('Tabla : ' vPropietario '.' vNombreTabla);
open obtieneColumnas(vPropietario, vNombreTabla) ;
loop fetch obtieneColumnas into vNombreColumna;
exit when obtieneColumnas%NOTFOUND;
dbms_output.put_line(chr(9)vNombreTabla'.'vNombreColumna);
end loop;
close obtieneColumnas;
end loop;
close obtieneTablas;
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20001,'Se ha detectado un error - 'SQLCODE' -ERROR- 'SQLERRM);
end;
No hay comentarios:
Publicar un comentario