martes, 22 de noviembre de 2011
jueves, 17 de noviembre de 2011
viernes, 11 de noviembre de 2011
jueves, 10 de noviembre de 2011
primer package calculadora
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 numeroFactorial(p1 number) return number;
function exponenteAlCuadrado(p1 number) return number;
function exponenteAlcubo(p1 number) return number;
end pkgCalculadora;
create or replace package body pkgCalculadora is
procedure imprime (pvalor number) is
begin dbms_output.put_line('Resultado: ' pvalor);
end imprime;
function suma(p1 number, p2 number) return number is
Begin imprime(p1+p2); return p1+p2;
End suma;
function resta(p1 number, p2 number) return number is
Begin imprime(p1-p2); return p1-p2;
End resta;
function multiplica(p1 number, p2 number) return number is
Begin imprime(p1*p2); return p1*p2;
End multiplica;
function divide(p1 number, p2 number) return number is
Begin imprime(p1/p2); return p1/p2;
EXCEPTION when Zero_divide then dbms_output.put_line ('Error !! Division por Cero');
End divide;
function numeroFactorial(p1 number) return number is
beginres =i;
for(i=1;i<=p1;i++);
res =res*i;
return res;
end numeroFactorial;
function exponenteAlCuadrado(p1 number) return number is
Begin imprime(p1*p1); return p1*p1;
End multiplica;
function exponenteAlcubo(p1 number) return number is
Begin imprime(p1*p1*p1); return p1*p1*p1;
End multiplica;
end pkgCalculadora;
declare r number(10);begin r := pkgCalculadora.suma(2, 3);
end;
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 numeroFactorial(p1 number) return number;
function exponenteAlCuadrado(p1 number) return number;
function exponenteAlcubo(p1 number) return number;
end pkgCalculadora;
create or replace package body pkgCalculadora is
procedure imprime (pvalor number) is
begin dbms_output.put_line('Resultado: ' pvalor);
end imprime;
function suma(p1 number, p2 number) return number is
Begin imprime(p1+p2); return p1+p2;
End suma;
function resta(p1 number, p2 number) return number is
Begin imprime(p1-p2); return p1-p2;
End resta;
function multiplica(p1 number, p2 number) return number is
Begin imprime(p1*p2); return p1*p2;
End multiplica;
function divide(p1 number, p2 number) return number is
Begin imprime(p1/p2); return p1/p2;
EXCEPTION when Zero_divide then dbms_output.put_line ('Error !! Division por Cero');
End divide;
function numeroFactorial(p1 number) return number is
beginres =i;
for(i=1;i<=p1;i++);
res =res*i;
return res;
end numeroFactorial;
function exponenteAlCuadrado(p1 number) return number is
Begin imprime(p1*p1); return p1*p1;
End multiplica;
function exponenteAlcubo(p1 number) return number is
Begin imprime(p1*p1*p1); return p1*p1*p1;
End multiplica;
end pkgCalculadora;
declare r number(10);begin r := pkgCalculadora.suma(2, 3);
end;
que son los packages
Un package (paquete) es una estructura que agrupa objetos compilados(procedimientos, funciones, variables, etc.) en la base de datos.
Generalmente se utiliza para agrupar objetos del mismo proceso de negocio o cuyos objetivos estén relacionados
Un package tiene dos partes:
Especificación(encabezado): Se declaran los objetos (procedimientos, funciones, variables, etc.) que son de uso público. Sólo es declaración, no contiene código.
Cuerpo(contenido): Contiene el código de los objetos declarados en la especificación. También se declaran y contienen los objetos (procedimientos, funciones, variables, etc.) que son de uso privado
Generalmente se utiliza para agrupar objetos del mismo proceso de negocio o cuyos objetivos estén relacionados
Un package tiene dos partes:
Especificación(encabezado): Se declaran los objetos (procedimientos, funciones, variables, etc.) que son de uso público. Sólo es declaración, no contiene código.
Cuerpo(contenido): Contiene el código de los objetos declarados en la especificación. También se declaran y contienen los objetos (procedimientos, funciones, variables, etc.) que son de uso privado
trigger resuelto segunda solemne
create or replace trigger trCuentaBancaria
after insert on giro
for each row
declare
vsaldoCuenta cuenta.saldo%type;
vsaldoLinea lineaCredito.saldo%type;
vIdLineaCredito lineaCredito.idLinea%type;
vLineaUsada integer;
begin
select saldo into vsaldoCuenta
where idCuenta = :new.idCuenta;
select saldo, idLinea into vsaldoLinea, vIdLineaCredito
from lineaCredito
where idCuenta = :new.idCuenta;
if :new.monto> vsaldoCuenta + vsaldoLinea then
dbms_output.put_line('Error No hay saldo suficiente disponible');
else if :new.monto <= vsaldoCuenta then
update cuenta
set Saldo = saldo - :new.monto
where idCuenta = :new.idCuenta;
else update cuenta
set Saldo = 0
where idCuenta = :new.idCuenta;
update lineaCredito
set saldo = saldo - vLineaUsada
where idCuenta = :new.idCuenta; vlineaUsada = vSaldoCuenta-vSaldoLinea;
insert into UsoLinea values(seqUsoLinea.nextval,vIdLineaCredito,sysdate,vlineausada)
end if;
end if;
end;
after insert on giro
for each row
declare
vsaldoCuenta cuenta.saldo%type;
vsaldoLinea lineaCredito.saldo%type;
vIdLineaCredito lineaCredito.idLinea%type;
vLineaUsada integer;
begin
select saldo into vsaldoCuenta
where idCuenta = :new.idCuenta;
select saldo, idLinea into vsaldoLinea, vIdLineaCredito
from lineaCredito
where idCuenta = :new.idCuenta;
if :new.monto> vsaldoCuenta + vsaldoLinea then
dbms_output.put_line('Error No hay saldo suficiente disponible');
else if :new.monto <= vsaldoCuenta then
update cuenta
set Saldo = saldo - :new.monto
where idCuenta = :new.idCuenta;
else update cuenta
set Saldo = 0
where idCuenta = :new.idCuenta;
update lineaCredito
set saldo = saldo - vLineaUsada
where idCuenta = :new.idCuenta; vlineaUsada = vSaldoCuenta-vSaldoLinea;
insert into UsoLinea values(seqUsoLinea.nextval,vIdLineaCredito,sysdate,vlineausada)
end if;
end if;
end;
Suscribirse a:
Entradas (Atom)