jueves, 19 de abril de 2012
Cursores
set serveroutput on;
declare
primo char(2) := 'si';
num integer;
begin
num := to_number('&IngreseNumero');
dbms_output.put_line('El umero ingresado es: '||num);
for i in 2..num - 1
loop
if mod(num,i)=0 then
primo := 'no';
end if;
end loop;
if primo = 'si' then
dbms_output.put_line('El numero es primo');
else
dbms_output.put_line('El numero no es primo');
end if;
exception
when VALUE_ERROR then
dbms_output.put_line('Error el dato ingresado tiene que ser un numero');
end;
set serveroutput on
declare
cursor mirPrimerCursor is select employee_id,first_name, from employees;
vid employees.employee_id%TYPE;
vnombre employees.first_name%TYPE;
begin
open mirPrimerCursor;
loop
fetch mirPrimerCursor into vid,vnombre;
exit when mirPrimerCursor%NOTFOUND;
dbms_output.put_line('ID: '||vid||' Nombre: '||vnombre);
end loop;
close mirPrimerCursor;
end;
set serveroutput on
declare
cursor mirPrimerCursor is select employee_id,first_name,hire_date from employees ORDER BY hire_date DESC;
vid employees.employee_id%TYPE;
vnombre employees.first_name%TYPE;
vFechaContrato employees.hire_date%TYPE;
antiguedad integer;
begin
open mirPrimerCursor;
loop
fetch mirPrimerCursor into vid,vnombre,vFechaContrato;
exit when mirPrimerCursor%NOTFOUND;
antiguedad := trunc((sysdate - vFechaContrato)/365);
if antiguedad= 12 then
dbms_output.put_line('ID: '||vid||' | Nombre: '||vnombre||' | Antiguedad: '||antiguedad);
end if;
end loop;
close mirPrimerCursor;
end;
set serveroutput on
declare
cursor miSegundoCursorTabla is select table_name from all_tables where owner = 'HR';
cursor miSegundoCursorColumnas is select owner,table_name,column_name from all_tab_columns where owner = 'HR';
vNombreTabla all_tables.table_name%TYPE;
vOwner all_tab_columns.owner%TYPE;
vTablaNombre all_tab_columns.table_name%TYPE;
vNombreColumna all_tab_columns.column_name%TYPE;
begin
open miSegundoCursorTabla;
loop
fetch miSegundoCursorTabla into vNombreTabla;
exit when miSegundoCursorTabla%NOTFOUND;
open miSegundoCursorColumnas;
loop
fetch miSegundoCursorColumnas into vOwner,vTablaNombre,vNombreColumna;
exit when miSegundoCursorColumnas%NOTFOUND;
dbms_output.put_line('Tabla: '||vNombreTabla||' Columna: '||vNombreColumna);
end loop;
close miSegundoCursorColumnas;
end loop;
close miSegundoCursorTabla;
end;
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario