viernes, 14 de junio de 2013
PROCEDURE - CURSOR
create or replace procedure listaPro(pNumero char) is
contador integer := 0;
vnombre empleado.nombre%type;
cursor cpropiedad (pnumempleado empleado.numempleado%type) is
select * from propiedad
where numempleado = pnumempleado;
begin
select nombre into vnombre
from empleado
where numempleado = pNumero;
dbms_output.put_line('Nombre Numero');
dbms_output.put_line(vnombre || ' ' || pNumero);
dbms_output.put_line(' Numero Tipo Renta');
for rprop in cpropiedad(pNumero)
LOOP
dbms_output.put_line(' '|| rprop.numpropiedad ||' ' || rprop.tipo || ' ' || rprop.renta);
contador := contador + 1;
END LOOP;
dbms_output.put_line('Total propiedades: ' || contador);
exception
when no_data_found then
dbms_output.put_line('No hay registros');
end;
set serveroutput on
begin
listaPro('SL21');
end;
--------------------------------------------------------------------------------------------------
create or replace
PROCEDURE CalcularEstadisticas is
type prop is record(
cantidad propiedad.numpropiedad%type,
rentaPromedio float,
rentaMaxima float,
rentaMinima float
);
cls prop;
begin
select count(numpropiedad), avg(renta), max(renta), min(renta) into cls
from propiedad;
dbms_output.put_line('Total Propiedades: '||cls.cantidad||' rentaPromedio: '||cls.rentaPromedio||' rentaMaxima: '||cls.rentaMaxima||' renta minima: '||cls.rentaMinima);
end;
set serveroutput on
begin
CalcularEstadisticas;
end;
miércoles, 12 de junio de 2013
Creación de paquetes en PL/SQL
--creación de paquetes
create or replace package elPaquete is
procedure imprim (p1 numeric);
function sumar (p1 numeric, p2 numeric) return numeric;
function restar (p1 numeric, p2 numeric) return numeric;
function dividir (p1 numeric, p2 numeric) return numeric;
function multiplicar (p1 numeric, p2 numeric) return numeric;
end alPaquete;
--Agregar cuerpo al paquete
create or replace package body elPaquete is
procedure imprim(p1 numeric) is
begin
dbms_output.put_line('El resultado es: '|| p1);
end imprim;
function sumar (p1 numeric, p2 numeric) return numeric is
begin
return (p1+p2);
end sumar;
function restar (p1 numeric, p2 numeric) return numeric is
begin
return (p1-p2);
end restar;
function dividir (p1 numeric, p2 numeric) return numeric is
begin
if p2 = 0 then
dbms_output.put_line('Error. no se puede dividir por cero');
return 0;
end if;
return (p1/p2);
end dividir;
function multiplicar (p1 numeric, p2 numeric) return numeric is
begin
return (p1*p2);
end multiplicar;
end elPaquete;
---- ejecutar el paquete!
select elPaquete.sumar(2,3) from dual;
select elPaquete.restar(2,3) from dual;
select elPaquete.dividir(10,5) from dual;
select elPaquete.multiplicar(2,3) from dual;
set serveroutput on
declare
mivariable numeric;
begin
mivariable := elPaquete.sumar(2,3);
elPaquete.imprim(mivariable);
end;
Suscribirse a:
Entradas (Atom)