miércoles, 11 de enero de 2012

Clase Miercoles 11-01-2012.


Triggers:

create
table Person (age int); CREATE TRIGGER PersonCheckAgeAFTER INSERT OR UPDATE OF age ON PersonFOR
BEGIN
IF
RAISE_APPLICATION_ERROR(-
END
END;
EACH ROW (:new.age < 0) THEN20000, 'no negative age allowed'); IF;insert

into person values (-20);

viernes, 6 de enero de 2012

Clase Viernes 06-01-2012

Procedimientos

create or replace procedure bono2012 (pnumempleado in empleado.numempleado%type, pbono numeric:=0.01)
is
vsalario empleado.salario%type;
vtotprop numeric;
begin
    select salario into vsalario
    from empleado
    where numempleado=pnumempleado
    select count(*) into vtotprop
    from propiedad
    where numempleado=pnumempleado
    if vtotprop >=5 then
        update empleado
        set salario=salario+salario*pbono
        where numempleado=pnumempleado
        dbms_output.put_line('empleado' || pnumempleado || 'bono' || pbono || 'aumento' || vsalario*pbono);
    else
        dbms_output.put_line('empleado' || pnumempleado || "no aplica bono");
    end if
end

Para llamar al procedimiento:

begin
    bono2012('SL21',0.03);
end

Procedimientos:
formal: es el que usa en la creacion.
real: es el que usa para llamarlo.

Funciones
create or replace function cuentapropiedades(pnumempleado empleado.numempleado%type)
return number;
is
vtotprop numeric;
begin 
    select count(*) into vtotprop
    from propiedad
    where numempleado=pnumempleado
    return vtotprop;
end


select cuenta propiedad ('SL21') from dual;

create or replace function sumadigitos (pnumero integer)
return number
is
num_aux number;
suma number;
begin
    num_aux=pnumero;
    suma :=0;
    while num_aux > 0 loop
    suma=suma+mod(num_aux,10);
    num_aux=trunc(num_aux/10);
    end loop;
    return suma;
end;

Mini-Guia lenguaje Oracle PL/SQL

Un aporte:
http://foro.powers.cl/viewtopic.php?t=160079

Clase Viernes 6 de Enero

Preparacion para la prueba de mañana
sera prueba escrita y siguiendo el mismo estilo de la anterior, alternativas y desarrollo

Ejercicio 1

create or replace procedure bono2012 (Pnumemepleado in empleado.numempleado%type, pbono numeric)
is
vsalario empleado.salario%type;
vtotprop numeric;

begin
select salario into vsalario
from empleado
where numempleado = Pnumemepleado;
select count(*) into vtotprop
from propiedad
where numempleado = Pnumemepleado;
if vtotprop>=5 then
update empleado set salario = salario+salario*pbono
where numempleado = Pnumemepleado;
dbms_output.put_line('empleado 'Pnumemepleado' bono 'pbono' aumento 'vsalario*pbono);
else
dbms_output.put_line('empleado 'Pnumemepleado' No tiene bono');
end if;
end;

Para ejecutar el procedimiento se usa


begin
bono2012('SL21',0.03);
end;


crear funciones

para crearla se usa:

create or replace function cuentapropiedades (Pnumemepleado in empleado.numempleado%type)
return number
is
vtotprop numeric;

begin
select count(*) into vtotprop
from propiedad
where numempleado = Pnumemepleado;
return vtotprop;
end;


para ejecutar la funcion usamos:

select cuentapropiedades('SG37') from dual;


otra funcion que suma numeros (no entendi exactamente que es lo que hace)

create or replace function sumadigitos (Pnumero IN integer)
return number
is
suma number:=0;
num_aux number;

begin
num_aux:=Pnumero;
while num_aux>0 loop
suma := suma+mod(num_aux,10);
num_aux:=trunc(num_aux/10);
end loop;
return suma;
end;

para llamarla se usa:

select sumadigitos(125) from dual;

lunes, 2 de enero de 2012

Fechas Pruebas

Fundamentos de ORACLE ACI-900
 
Erwin Fischer
2 Catedras+1 Examen
60%+40%
 
Catedra I 17-12-2011
Catedra II 06-01-2012
Examen 14-01-2012
 
(20-21-27-28)-01-2012 Profesor no puede hacer clases.
 
Viernes 22:00 (Fin Clase, sin breack).
Los Sabados 10,17,7 Recuperacion de Clases