viernes, 8 de junio de 2012

Package

create or replace package MiPrimerPaquete is --creamos el encabezado
  FUNCTION CUENTAEMPLEADOS(pDepto in employees.department_id%type) return number;
end MiPrimerPaquete;


create or replace package body MiPrimerPaquete is
function CUENTAEMPLEADOS(pDepto IN employees.department_id%type)  
RETURN NUMBER AS
totalEmpleados integer;
begin
    select count(*) into totalEmpleados
    from Employees
    where department_id = pDepto;
    RETURN totalEmpleados;
  end CUENTAEMPLEADOS;
end MiPrimerPaquete;

select MiPrimerPaquete.CUENTAEMPLEADOS(90) FROM DUAL;

Triggers

create table autor(
id_autor int,
constraint pk_id_autor primary key(id_autor));

create table libro(
id_libro int,
id_autor int,
constraint pk_id_libro primary key(id_libro),
constraint fk_id_autor foreign key(id_autor) references autor);


ALTER TABLE libro
disable CONSTRAINT fk_id_autor;

insert into autor values(12);
insert into libro values(5,12);

delete from autor
where id_autor = 11;

select * from libro;
select * from autor;

TRIGGER

create or replace trigger miPrimerTrigger
after delete on autor
references old as libroViejo
for each row
begin
     delete from libro
     where id_autor = :libroviejo.id_autor;
    
end;

show err trigger miPrimerTrigger;

delete from autor
where id_autor = 11;

Procedimientos Almacenados

-- Procedimiento Almacenado OUT

create or replace procedure primerProcedure (ptexto out varchar2) is
begin
ptexto := 'Este valor fue modificado en mi procAlmacenado!!';
end primerProcedure;

set serveroutput on
declare
vTexto varchar2(60) := 'Hola po CTM';
begin
primerProcedure(vTexto);
dbms_output.put_line('Mi Mensaje: '||vTexto);
end;

-- Procedimiento Almacenado IN OUT

create or replace procedure segundoProcedure (ptexto in out varchar2) is
begin
dbms_output.put_line('Mensaje de Inicio: '||pTexto);
ptexto := 'Este valor fue modificado en mi procAlmacenado!!';
end segundoProcedure;

set serveroutput on
declare
vTexto varchar2(60) := 'Hola po CTM';
begin
segundoProcedure(vTexto);
dbms_output.put_line('Mi Mensaje: '||vTexto);
end;

-- Procedimiento Almacenado CONCATENAR

create or replace procedure Concatenar (ptexto1 varchar2, ptexto2 varchar2) is
begin
dbms_output.put_line(pTexto1||' '||pTexto2);
end Concatenar;

show err procedure Concatenar;

set serveroutput on
declare
vTexto varchar2(60) := 'Hola po CTM';
begin
Concatenar('Buenas', 'Cachitas');
Concatenar(ptexto2=>'Buenas', ptexto1=>'Cachitas');
end;

-- Funciones

create or replace function funcParImpar(pNumero integer) is
msg varchar2(5) := 'Impar'
begin
if mod(pNumero,2) = 0 then
msg := 'Par';
end if;
return msg;
end;

create or replace function funcConcatenar(ptexto1 varchar(2), ptexto2 varchar(2)) is
begin
return ptexto1||' '||ptexto2;
end;

select funcConcatenar('7')