create or replace package pkgCalculadora is
function suma(p1 number, p2 number) return number;
function resta(p1 number, p2 number) return number;
function multiplica(p1 number, p2 number) return number;
function divide(p1 number, p2 number) return number;
function potencia(p1 number, p2 number) return number;
function factorial(p1 number) return number;
function raiz(p1 number, p2 number) return number;
end pkgCalculadora;
/*dbms_output.put_line('2 + 3 = ' || pkgCalculadora.suma(2,3));*/
create or replace package body pkgCalculadora is
procedure imprime (p1 number, p2 number, x char, pvalor number) is
begin
dbms_output.put_line(p1 || ' ' || x || ' ' || p2 || ' = ' || pvalor);
end imprime;
procedure imprime2 (p1 number, pvalor number) is
begin
if p1 > 0 then
dbms_output.put_line(p1 || '!' || ' = ' || pvalor);
else
dbms_output.put_line('el resultado no existe');
end if;
end imprime2;
procedure imprime3 (p1 number, p2 number, pvalor number) is
begin
dbms_output.put_line(p1 || '^' || '1/' || p2 || ' = ' || pvalor);
end imprime3;
function suma(p1 number, p2 number) return number is
Begin
imprime(p1, p2, '+', p1+p2);
return p1+p2;
End suma;
function resta(p1 number, p2 number) return number is
Begin
imprime(p1, p2, '-', p1-p2);
return p1-p2;
End resta;
function multiplica(p1 number, p2 number) return number is
Begin
imprime(p1, p2, '*', p1*p2);
return p1*p2;
End multiplica;
function divide(p1 number, p2 number) return number is
Begin
imprime(p1, p2, '/', p1/p2);
return p1/p2;
EXCEPTION
when Zero_divide then
dbms_output.put_line ('Error !! Division por Cero');
End divide;
function potencia(p1 number, p2 number) return number is
begin
imprime(p1, p2, '^', power(p1,p2));
return power(p1,p2);
end potencia;
function factorial(p1 number)
return number is
resultado number := 1;
temp number := p1;
begin
if p1 > 0 then
while (temp > 0)
loop
resultado := resultado *temp;
temp := temp -1;
end loop;
else
resultado := null;
end if;
imprime2(p1,resultado);
return resultado;
/*dbms_output.put_line(resultado);*/
end factorial;
function raiz(p1 number, p2 number) return number is
resultado number := 1;
begin
resultado := round(power(p1,1/p2),37);
imprime3(p1, p2, resultado);
return resultado;
end raiz;
end;
declare
r number(10);
begin
r := pkgCalculadora.suma(2, 3);
end;
No hay comentarios:
Publicar un comentario