viernes, 2 de diciembre de 2016

Creando paquete en Oracle  con procediemientos Listar, Buscar,Agregar,Actualizar,Eliminar 




Estructura:
Create Or Replace Package Pais
As
 Procedure Listar;
 Procedure Buscar(vCodPais TPais.CodPais%Type);
 procedure Agregar(vCodPais char,vNombre varchar2);
 procedure Actualizar(vCodPais char,vNombre varchar2);
 procedure Eliminar(vCodPais char);
end;

Create or replace Package Body Pais
as
Procedure  Listar
Is
Cursor  Cpais Is  Select  * From  Tpais;
R   Tpais%Rowtype;
Begin
     Open Cpais;
     Loop
        Fetch Cpais Into  R;
        Exit  When Cpais%Notfound;
        Dbms_Output.Put_Line('Codpais: '||R.Codpais);
        Dbms_Output.Put_Line('Nombre: '||R.Nombre);
     End Loop;
     Close Cpais;
End;
 procedure  Buscar
(vCodPais TPais.CodPais%Type)
Is
Cursor cBuscar is select  * from TPais where CodPais=vCodPais;
r TPais%rowtype;
i number :=0 ;
Begin
Open cBuscar;
Loop    
Fetch cBuscar into r;
Exit When cBuscar%notfound;
DBMS_OutPut.Put_Line('CodPais: '||r.CodPais);
DBMS_OutPut.Put_Line('Nombre: '||r.Nombre);
i:= i+1;
End loop;
Close cBuscar;     
if (i=0) then
DBMS_OutPut.Put_Line('Error: No se encontro el Pais');
end if;
End;

procedure Agregar
(
vCodPais char,vNombre varchar2)
is
i number;
eCodPais exception;
Begin
      select count(*) into i from  TPais where CodPais=vCodPais;
      if (i<>0) Then
          raise   eCodPais;
      end if;
      Insert  into TPais values (vCodPais,vNombre);
      Commit;
      Dbms_output.put_line('País Agregado Correctamente');
      Exception
      When  eCodPais then
      Dbms_output.put_line('Error:  Duplicado');
end;

  procedure Actualizar
(
vCodPais char,vNombre varchar2)
is
i number;
eCodPais exception;
Begin
      select count(*) into i from  TPais where CodPais=vCodPais;
      if (i=0) Then
          raise   eCodPais;
      end if;
      Update TPais set Nombre=vNombre where CodPais=vCodPais;
      Commit;
      Dbms_output.put_line('País Actualizado Correctamente');
      Exception
      When  eCodPais then
      Dbms_output.put_line('Error:  No existe');
end;


 procedure Eliminar
(
vCodPais char)
is
i number;
eCodPais exception;
eCliente exception;
Begin
      select count(*) into i from  TPais where CodPais=vCodPais;
      if (i=0) Then
          raise   eCodPais;
      end if;
      select count(*) into  i From  TCliente where CodPais=vCodPais;
      if  (i<>0) then
         raise eCliente;
      end if;
      Delete TPais  where CodPais=vCodPais;
      Commit;
      Dbms_output.put_line('País Eliminado Correctamente');
      Exception
      When  eCodPais then
      Dbms_output.put_line('Error:  No existe');
      When  eCliente then
      Dbms_output.put_line('Error:  País existe en Cliente');
end;

end;
Begin
Pais.Listar;
end;
Begin
Pais.Buscar('P00002');
end;

No hay comentarios.:

Publicar un comentario

Gracias por participar ..!!