miércoles, 21 de diciembre de 2011

cursores con parametros

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