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;
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;
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;
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
Suscribirse a:
Entradas (Atom)