martes, 22 de noviembre de 2016

PROCEDIMIENTOS ALMACENADOS BUSCADORES TBS ANTENOR ORREGO 

------Carrera Buscadores----
Create or  replace  procedure  spBuscarCarrera
(vCodCarreraTCarrera.CodCarrera%Type)
Is
Cursor cBuscar is select  * from TCarrera where CodCarrera=vCodCarrera;
rTCarrera%rowtype;
i number :=0 ;
Begin
          Open cBuscar;
          Loop    
                  Fetch cBuscar into r;
                   Exit When cBuscar%notfound;
DBMS_OutPut.Put_Line('CodCarrera: '||r.CodCarrera);
DBMS_OutPut.Put_Line('Carrera: '||r.Carrera);
i:= i+1;
                  End loop;
         Close cBuscar;     
if (i=0) then
DBMS_OutPut.Put_Line('Error: No se encontro Carrera');
end if;
End;
begin
spBuscarCarrera('C0051');
end;
select * fromTCarrera;
----Buscar Usuario---
Create or replace procedure spBuscarUsuario
(vUsuario TUsuario.Usuario%Type)
is
cursorcBuscar is select * from TUsuario where Usuario=vUsuario;
r  TUsuario%rowType;
i number :=0;
Begin
opencBuscar;
     Loop
         Fetch cBuscar into r;
         Exit When cBuscar%notfound;
DBMS_OutPut.Put_Line('Usuario:'||r.Usuario);
DBMS_OutPut.Put_Line('Contraseña:'||r.Contraseña);
i:= i+1;
end loop;
closecBuscar;
if (i=0) then
DBMS_OutPut.Put_Line('Error: No se encontroUsuario');
end if;
end;
Begin
spBuscarUsuario('U0051');
end;
select * from TUsuario;
----Buscar Docente ---
describe TDocente;
create or replace procedure spBuscarDocente
(vCodDocente  TDocente.CodDocente%type)
is
cursor cBuscar is select  *  from  TDocente where CodDocente=vCodDocente;
r TDocente%rowType;
i number:=0;
Begin
    Open cBuscar;
      Loop
          Fetch cBuscar into  r;
          Exit When  cBuscar%notfound;
          DBMS_outPut.Put_line('CodDocente: '||r.CodDocente);
          DBMS_outPut.Put_line('APePaterno: '||r.APePaterno);
          DBMs_outPut.Put_Line('APeMaterno: '||r.APeMaterno);
          DBMS_outPut.put_line('Nombres: '||r.Nombres);
          DBMS_OutPut.Put_Line('Usuario: '||r.Usuario);
          i:= i +1;
       end loop;
     Close cBuscar;
     if (i=0) then
        DBMS_output.Put_Line('No se encontro Docente');
     end if;
end;
begin
spBuscarDocente ('D0002');
end;
----Buscar Alumno ---
Describe TAlumno;
create  or replace procedure spBuscarAlumno
(vCodAlumno TAlumno.CodAlumno%type)
is
cursor cBuscar  is select  * from  TAlumno where CodAlumno=vCodAlumno;
r TAlumno%rowtype;
i number:=0;
Begin
     Open cBuscar;
        Loop
            Fetch CBuscar into r;
            Exit When cBuscar%notfound;
            DBMS_output.Put_line('CodAlumno: '||r.CodAlumno);
            DBMS_outPut.Put_line('APePaterno: '||r.APePaterno);
            DBMS_outPut.Put_Line('APeMaterno: '||r.APeMaterno);
            DBMS_OutPut.Put_line('Nombres: '||r.Nombres);
            DBMS_outPut.Put_Line('FechaNac: '||r.FechaNac);
            DBMS_output.Put_Line('Usuario: '||r.Usuario);
            DBMS_outPut.Put_line('CodCarrera'||r.CodCarrera);
            i:=i + 1;
         end loop;
     Close CBuscar;
     if (i=0) then
       DBMS_outPut.put_line('No se encontro');
     end if;
end;
begin
spBuscarAlumno('A0002');
end;
---Buscar Carga---
describe TCarga;
create  or replace procedure spBuscarCarga
(vIDCarga TCarga.IDCarga%type)
is
cursor cBuscar is select  * from TCarga where IDCarga=vIDCarga;
r TCarga%rowtype;
i number:=0;
Begin
     Open cBuscar;
       Loop
           Fetch cBuscar into r;
           Exit When cBuscar%notfound;
           DBMS_outPut.put_line('IDCarga: '||r.IDCarga);
           DBMS_output.Put_line('CodDocente: '||r.CodDocente);
           DBMS_Output.put_line('CodAsignatura: '||r.CodAsignatura);
           DBMS_output.put_line('Semestre: '||r.Semestre);
        i:= i +1;
        end loop;
     Close cBuscar;
     if (i=0) then
       DBMS_output.put_line('No se encontro Carga');  
     end if;
end;
begin
spBuscarCarga('C0003');
end;
------Buscar notas---
describe TNotas;
create or replace procedure spbuscarNotas
(vCodAlumno TNotas.CodAlumno%type,vCodAsignatura TNotas.CodAsignatura%type,vSemestre TNotas.Semestre%type)
is
cursor cBuscar is select * from TNotas where CodAlumno=vCodAlumno and
CodAsignatura=vCodAsignatura and Semestre=vSemestre;
r TNotas%rowtype;
i number:=0;
Begin
    Open cBuscar;
       Loop
          Fetch cBuscar into r;
          Exit When cBuscar%notfound;
          DBMS_output.put_line('CodAlumno: '||r.CodAlumno);
          DBMS_output.put_line('CodAsignatura: '||r.CodAsignatura);
          DBMS_output.put_line('Semestre: '||r.Semestre);
          DBMS_outPut.put_Line('Practica1: '||r.Practica1);
          DBMS_outPut.put_line('Practica2:'||r.Practica2);
          DBMS_outPut.Put_line('NotaFinal: '||r.NotaFinal);
          i:= i + 1;
       end loop;
    Close cBuscar;
    if (i=0) then
      DBMS_outPut.put_line('No se encontro nota');
    end if;
end;
begin
spBuscarNotas('A0001','S0001','I');

end;
MANTENIMIENTO AGREGAR 

,ACTUALIZAR,ELIMINAR TBS ANTENOR 

ORREGO 

---PA CARRERA  agregar VALIDADO
describe TCarrera;
create  or replace procedure spAgregarCarrera
(
vCodcarrera char,vCarrera varchar2)
is
i number;
eCodCarrera  exception;
Begin
   select count(*) into  i from  TCarrera where  CodCarrera=vCodcarrera;
   if  (i <> 0) then
    raise eCodCarrera;
   end if;
   insert into  TCarrera values(vCodcarrera,vCarrera);
  
   commit;
   DBMS_OutPut.put_Line('Se agrego la carrera correctamente ');
   exception
   when eCodCarrera then
        DBMS_OutPut.put_Line('Errror:Duplicado ');
end;

SET SERVEROUTPUT ON;

execute  spAgregarCarrera('C0011','hola');
select * from  TCarrera;



   ------Actualizar Carrera--
  
 create  or replace procedure spActualizarCarrera
(
vCodcarrera char,vCarrera varchar2)
is
i number;
eCodCarrera  exception;
Begin
   select count(*) into  i from  TCarrera where  CodCarrera=vCodcarrera;
   if  (i = 0) then
    raise eCodCarrera;
   end if;
   update   TCarrera set  Carrera=vCarrera where CodCarrera=vCodcarrera;
  
   commit;
   DBMS_OutPut.put_Line('Se actualizo  la carrera correctamente ');
   exception
   when eCodCarrera then
        DBMS_OutPut.put_Line('Errror:no existe  en TCarrera ');
end;
execute  spActualizarCarrera('C0011','dddd');
select * from  TCarrera;







-----Eliminar Carrera ---

 create  or replace procedure spEliminarCarrera
(
vCodcarrera char)
is
i number;
eCodCarrera  exception;
eAlumno exception;
Begin
   select count(*) into  i from  TCarrera where  CodCarrera=vCodcarrera;
   if  (i = 0) then
    raise eCodCarrera;
   end if;
   select count(*) into  i from  TAlumno where  CodCarrera=vCodcarrera;
   if  (i <> 0) then
    raise eAlumno;
   end if;
   Delete    TCarrera  where CodCarrera=vCodcarrera;
  
   commit;
   DBMS_OutPut.put_Line('Se Elimino  la carrera correctamente ');
   exception
   when eCodCarrera then
        DBMS_OutPut.put_Line('Errror:no existe  en TCarrera ');
   when eAlumno then
   DBMS_OutPut.put_Line('Errror: existe  en alumnos en la carrera ');
end;

execute  spEliminarCarrera('C0011');
select * from  TCarrera;
--- Agregar  Usuario  ----
describe TUsuario;
create  or replace procedure spAgregarUsuario
(
vUsuario  char,vContraseña char)
is
i number;
eCodUsuario exception;
Begin
  select count(*) into  i from  TUsuario where  Usuario=vUsuario;
  if  (i <> 0) then
    raise eCodUsuario;
  end if;
     insert into  TUsuario values(vUsuario,vContraseña);
  
   commit;
   DBMS_OutPut.put_Line('Se agrego el usuario correctamente ');
   exception
   when eCodUsuario then
        DBMS_OutPut.put_Line('Errror:Duplicado ');
end;
execute spAgregarUsuario('U0031','222');
select * from TUsuario order by  Usuario asc  ;
----Actualizar Usuario---
create  or replace procedure spActualizarrUsuario
(
vUsuario  char,vContraseña char)
is
i number;
eCodUsuario exception;
Begin
  select count(*) into  i from  TUsuario where  Usuario=vUsuario;
  if  (i = 0) then
    raise eCodUsuario;
  end if;
     Update     TUsuario set Contraseña=vContraseña where Usuario=vUsuario;
  
   commit;
   DBMS_OutPut.put_Line('Se actualizo el usuario correctamente ');
   exception
   when eCodUsuario then
        DBMS_OutPut.put_Line('Errror:no existe ');
end;
execute spActualizarrUsuario('U0031','33333');
select * from TUsuario order by  Usuario asc  ; 
-- Eliminar Usuario  ---
create  or replace procedure spEliminarUsuario
(
vUsuario  char)
is
i number;
eCodUsuario exception;
eAlumno exception;
eDocente exception;
Begin
  select count(*) into  i from  TUsuario where  Usuario=vUsuario;
  if  (i = 0) then
    raise eCodUsuario;
  end if;
  select count(*) into  i from  TAlumno where  Usuario=vUsuario;
  if  (i <> 0) then
    raise eAlumno;
  end if;
  select count(*) into  i from  TDocente where  Usuario=vUsuario;
  if  (i <> 0) then
    raise eDocente;
  end if;
     Delete   TUsuario  where Usuario=vUsuario;
  
   commit;
   DBMS_OutPut.put_Line('Se elimino el usuario correctamente ');
   exception
   when eCodUsuario then
        DBMS_OutPut.put_Line('Errror:no existe ');
   when eAlumno then
        DBMS_OutPut.put_Line('Errror:usuario existe en alumno ');
   when eDocente then
        DBMS_OutPut.put_Line('Errror:docente existe en alumno ');
end;
execute spEliminarUsuario('U0031');
select * from TUsuario order by  Usuario asc  ; 
---- Agregar Docente----
describe Tdocente;
create or replace procedure spAgregarDocente
(
vCodDocente char,vAPePaterno varchar2,vAPeMaterno varchar2,vNombres varchar2,vUsuario char)
is
i number;
eCodDocente exception;
eUsuario exception;
eUsuarioA exception;
Begin
    select  count(*) into i from Tdocente where CodDocente=vCodDocente;
    if  (i <> 0) then
     raise eCodDocente;
    end if;
   
    select count(*) into i from TUsuario where Usuario=vUsuario;
    if  (i = 0) then
     raise eUsuario;
    end if;
   
    select count(*) into i from Tdocente where Usuario=vUsuario;
    if  (i <> 0) then
     raise eUsuarioA;
    end if;   
    insert  into TDocente values(vCodDocente,vAPePaterno,vAPeMaterno,vNombres,vUsuario);
    commit;
   DBMS_OutPut.put_Line('Se Agrego el Docente correctamente ');
   exception
   when eCodDocente then
        DBMS_OutPut.put_Line('Errror: Duplicado ');
   when eUsuario then
        DBMS_OutPut.put_Line('Errror: Usuario no existe ');
   when eUsuarioA then
        DBMS_OutPut.put_Line('Errror: Usuario esta en uso');
end;   
   
    execute spAgregarDocente('D0021','LAURRARI', 'AZQABACHE','JESUS','U0031');
    execute spAgregarDocente('D0022','daa', 'ssss','rrr','U0032');
    select  * from TDocente;
---Actualizar docente--
create or replace procedure spActualizarDocente
(
vCodDocente char,vAPePaterno varchar2,vAPeMaterno varchar2,vNombres varchar2,vUsuario char)
is
i number;
eCodDocente exception;
eUsuario exception;
Begin
    select  count(*) into i from Tdocente where CodDocente=vCodDocente;
    if  (i = 0) then
     raise eCodDocente;
    end if;
   
    select count(*) into i from TUsuario where Usuario=vUsuario;
    if  (i = 0) then
     raise eUsuario;
    end if;
   
    Update   TDocente set APePaterno=vAPePaterno,APeMaterno=vAPeMaterno,Nombres=vNombres,Usuario=vUsuario where CodDocente=vCodDocente;
    commit;
   DBMS_OutPut.put_Line('Se Actualizo el Docente correctamente ');
   exception
   when eCodDocente then
        DBMS_OutPut.put_Line('Errror: Docente no existe ');
   when eUsuario then
        DBMS_OutPut.put_Line('Errror: Usuario no existe ');
end;
    execute spActualizarDocente('D0021','Hola', 'Hola','HOla','U0031');
    execute spActualizarDocente('D0022','Hola', 'Hola','HOla','U0032');
    select  * from TDocente;

---ELIMINAR DOCENTE –
create or replace procedure spEliminarDocente
(
vCodDocente char)
is
i number;
eCodDocente exception;
eCarga exception;
Begin
    select  count(*) into i from Tdocente where CodDocente=vCodDocente;
    if  (i = 0) then
     raise eCodDocente;
    end if;
   
    select count(*) into i from TCarga where CodDocente=vCodDocente;
    if  (i <> 0) then
     raise eCarga;
    end if;
   
    Delete  TDocente  where CodDocente=vCodDocente;
    commit;
   DBMS_OutPut.put_Line('Se Elimino el Docente correctamente ');
   exception
   when eCodDocente then
        DBMS_OutPut.put_Line('Errror: Docente no existe ');
   when eCarga then
        DBMS_OutPut.put_Line('Errror: El docente existe en Carga ');
end;
    execute spEliminarDocente('D0021');
    execute spEliminarDocente('D0022');
    select  * from TDocente;




---Agregar Alumno ---
Create  or replace procedure spAgregarAlumno
(
vCodAlumno char,vAPePaterno varchar2,vAPeMaterno varchar2,vNombres varchar2,vFechaNac date,vUsuario char,vCodCarrera char)
is
i number;
eCodAlumno exception;
eUsuario exception;
eUsuarioA exception;
Begin
     select count(*) into  i from TAlumno where CodAlumno=vCodAlumno;
     if (i<>0) then
       raise eCodAlumno;
     end if;
     select count(*) into  i from  TUsuario where Usuario=vUsuario;
     if (i=0) then
       raise eUsuario;
     end if;
     select count(*) into i from TAlumno where Usuario=vUsuario;
     if (i<>0) then
       raise eUsuarioA;
     end if;
     Insert  into TAlumno values(vCodAlumno,vAPePaterno,vAPeMaterno,vNombres,vFechaNac,vUsuario,vCodCarrera);
     commit;
     DBMS_OutPut.Put_Line('Alumno Agregado correctamente');
    
     exception
     When eCodAlumno then
     DBMS_OutPut.Put_Line('Error:Duplicado');
     When eUsuario then
     DBMS_OutPut.Put_Line('Error:Usuario no Existe');
     When eUsuarioA then
     DBMS_OutPut.Put_Line('Error:Usuario en uso');
end;

begin
spAgregarAlumno('A0020','AZABACHE','MENDIZABALA','JUANA','12/06/1980','U0020','C0010');
end;
begin
spListarAlumno;
end;

---Actualizar Alumno ---
Create  or replace procedure spActualizarAlumno
(
vCodAlumno char,vAPePaterno varchar2,vAPeMaterno varchar2,vNombres varchar2,vFechaNac date,vUsuario char,vCodCarrera char)
is
i number;
eCodAlumno exception;
eUsuario exception;
Begin
     select count(*) into  i from TAlumno where CodAlumno=vCodAlumno;
     if (i=0) then
       raise eCodAlumno;
     end if;
     select count(*) into  i from  TUsuario where Usuario=vUsuario;
     if (i=0) then
       raise eUsuario;
     end if;
     Update TAlumno set APePaterno=vAPePaterno,APeMaterno=vAPeMaterno,Nombres=vNombres,FechaNac=vFechaNac,Usuario=vUsuario,CodCarrera=vCodCarrera where CodAlumno=vCodAlumno;
     commit;
     DBMS_OutPut.Put_Line('Alumno Actualizado correctamente');
    
     exception
     When eCodAlumno then
     DBMS_OutPut.Put_Line('Error:Alumno no existe');
     When eUsuario then
     DBMS_OutPut.Put_Line('Error:Usuario no Existe');
end;
begin
spActualizarAlumno('A0020','AZABACHE','hola','JUANA','12/06/1980','U0020','C0010');
end;
begin
spListarAlumno;
end;
---Eliminar Alumno--
Create  or replace procedure spEliminarAlumno
(
vCodAlumno char)
is
i number;
eCodAlumno exception;
eNotas exception;
Begin
     select count(*) into  i from TAlumno where CodAlumno=vCodAlumno;
     if (i=0) then
       raise eCodAlumno;
     end if;
     select count(*) into  i from  TNotas where CodAlumno=vCodAlumno;
     if (i<>0) then
       raise eNotas;
     end if;
     Delete TAlumno  where CodAlumno=vCodAlumno;
     commit;
     DBMS_OutPut.Put_Line('Alumno Eliminado correctamente');
    
     exception
     When eCodAlumno then
     DBMS_OutPut.Put_Line('Error:Alumno no existe');
     When eNotas then
     DBMS_OutPut.Put_Line('Error:Alumno Existe en la tabla Notas');
end;
begin
spEliminarAlumno('A0021');
end;
begin
spListarAlumno;
end;
----Agregar Carga----
describe TCarga;
Create  or replace procedure spAgregarCarga
(
vIDCarga char,vCodDocente char,vCodAsignatura char,vSemestre varchar2)
is
i number;
eCodCarga exception;
eCodDocente exception;
eCodAsignatura exception;
Begin
    select count(*) into i from TCarga where IDCarga=vIDCarga;
    if (i<>0) then
     raise eCodCarga;
    end if;
    select count(*) into i from TDocente where CodDocente=vCodDocente;
    if (i=0) then
     raise eCodDocente;
    end if;
    select count(*) into i from TAsignatura where CodAsignatura=vCodAsignatura;
    if (i=0) then
     raise  eCodAsignatura;
    end if;
   
    insert into  TCarga values(vIDCarga,vCodDocente,vCodAsignatura,vSemestre);
    commit;
    DBMS_OutPut.Put_Line('Carga agregado correctamente ');
    exception
    When eCodCarga then
    DBMS_OutPut.Put_Line('Error:Duplicado');
    When eCodDocente then
    DBMS_OutPut.Put_Line('Error:Docente  no existe');
    When eCodAsignatura then
    DBMS_OutPut.Put_Line('Error:Asignatura no existe');
end;
begin
spAgregarCarga('C0021','D0010','S0010','I');
end;
begin
spListarCarga;
end;

----Actualziar Carga---
Create  or replace procedure spActualizarCarga
(
vIDCarga char,vCodDocente char,vCodAsignatura char,vSemestre varchar2)
is
i number;
eCodCarga exception;
eCodDocente exception;
eCodAsignatura exception;
Begin
    select count(*) into i from TCarga where IDCarga=vIDCarga;
    if (i=0) then
     raise eCodCarga;
    end if;
    select count(*) into i from TDocente where CodDocente=vCodDocente;
    if (i=0) then
     raise eCodDocente;
    end if;
    select count(*) into i from TAsignatura where CodAsignatura=vCodAsignatura;
    if (i=0) then
     raise  eCodAsignatura;
    end if;
   
    Update TCarga set CodDocente=vCodDocente,CodAsignatura=vCodAsignatura,Semestre=vSemestre where IDCarga=vIDCarga;
    commit;
    DBMS_OutPut.Put_Line('Carga agregado correctamente ');
    exception
    When eCodCarga then
    DBMS_OutPut.Put_Line('Error:Carga no existe');
    When eCodDocente then
    DBMS_OutPut.Put_Line('Error:Docente  no existe');
    When eCodAsignatura then
    DBMS_OutPut.Put_Line('Error:Asignatura no existe');
end;
begin
spActualizarCarga('C0021','D0010','S0010','V');
end;
begin
spListarCarga;
end;
---Eliminar Carga---
Create  or replace procedure spEliminarCarga
(
vIDCarga char)
is
i number;
eCodCarga exception;
Begin
    select count(*) into i from TCarga where IDCarga=vIDCarga;
    if (i=0) then
     raise eCodCarga;
    end if;
    Delete TCarga where IDCarga=vIDCarga;
    commit;
    DBMS_OutPut.Put_Line('Carga eliminado correctamente ');
    exception
    When eCodCarga then
    DBMS_OutPut.Put_Line('Error:Carga no existe');
end;
begin
spEliminarCarga('C0021');
end;
begin
spListarCarga;
end;
----Agregar Asignatura---
Describe TAsignatura;
Create  or replace procedure spAgregarAsignatura
(
vCodAsignatura char,vAsignatura varchar2,vCodRequisito char)
is
i number;
eCodAsignatura exception;
Begin
    select count(*) into i from TAsignatura where CodAsignatura=vCodAsignatura;
    if (i<>0) then
     raise eCodAsignatura;
    end if;
    insert into TAsignatura values (vCodAsignatura,vAsignatura,vCodRequisito);
    commit;
    DBMS_OutPut.Put_Line('Asignatura agregado correctamente');
    exception
    When eCodAsignatura then
    DBMS_OutPut.Put_Line('Error:Duplicado');
end;
begin
spAgregarAsignatura('S0021','FISICA','S0010');
end;
begin
spListarAsignatura;
end;
---Actualizar Asignatura----
Create  or replace procedure spActualizarAsignatura
(
vCodAsignatura char,vAsignatura varchar2,vCodRequisito char)
is
i number;
eCodAsignatura exception;
Begin
    select count(*) into i from TAsignatura where CodAsignatura=vCodAsignatura;
    if (i=0) then
     raise eCodAsignatura;
    end if;
    update TAsignatura set Asignatura=vAsignatura,CodRequisito=vCodRequisito where CodAsignatura=vCodAsignatura;
    commit;
    DBMS_OutPut.Put_Line('Asignatura agregado correctamente');
    exception
    When eCodAsignatura then
    DBMS_OutPut.Put_Line('Error:Asignatura no existe');
end;
begin
spActualizarAsignatura('S0021','holaa','S0010');
end;
begin
spListarAsignatura;
end;
---Eliminar Asignatura----
Create  or replace procedure spEliminarAsignatura
(
vCodAsignatura char)
is
i number;
eCodAsignatura exception;
eNotas  exception;
Begin
    select count(*) into i from TAsignatura where CodAsignatura=vCodAsignatura;
    if (i=0) then
     raise eCodAsignatura;
    end if;
    select count(*) into  i from TNotas where  CodAsignatura=vCodAsignatura;
    if(i<>0) then
     raise eNotas;
    end if;
    Delete TAsignatura  where CodAsignatura=vCodAsignatura;
    commit;
    DBMS_OutPut.Put_Line('Asignatura Eliminada correctamente');
    exception
    When eCodAsignatura then
    DBMS_OutPut.Put_Line('Error:Asignatura no existe');
    When eNotas then
    DBMS_OutPut.Put_Line('Error:Asignatura existe en TNotas');
end;
begin
spEliminarAsignatura('S0021');
end;
begin
spListarAsignatura;
end;
----Agregar Notas---
describe TNotas;
Create or replace procedure spAgregarNotas
(
vCodAlumno char,vCodAsignatura char,vSemestre char,vPractica1 decimal,vPractica2 decimal,vNotaFinal decimal)
is
i number;
eClave exception;
eCodAlumno exception;
eCodAsignatura exception;
Begin
     select count(*) into  i  from TNotas where CodAlumno=vCodAlumno and CodAsignatura=vCodAsignatura and Semestre=vSemestre;
     if (i<>0) then
       raise eClave;
     end if;
     select count(*) into  i from TAlumno where CodAlumno=vCodAlumno;
     if (i=0) then
       raise eCodAlumno;
     end if;
     select count(*) into i from TAsignatura where CodAsignatura=vCodAsignatura;
     if (i=0) then
       raise eCodAsignatura;
     end if;   
     insert into TNotas values (vCodAlumno,vCodAsignatura,vSemestre,vPractica1,vPractica2,vNotaFinal);
     commit;
     DBMS_OutPut.Put_Line('Nota Agregada correctamente');
     exception
     When eClave then
     DBMS_OutPut.Put_Line('Error: Duplicado ');
     When eCodAlumno then    
     DBMS_OutPut.Put_Line('Error: Alumno no existe ');
     When eCodAsignatura then
     DBMS_OutPut.Put_Line('Error: Asignatura no existe');
end;
begin
spAgregarNotas('A0010','S0010','III','17','17','15');
end;
begin
spListarNotas;
end;  

-----Actualizar Notas----
Create or replace procedure spActualizarNotas
(
vCodAlumno char,vCodAsignatura char,vSemestre char,vPractica1 decimal,vPractica2 decimal,vNotaFinal decimal)
is
i number;
eClave exception;
Begin
     select count(*) into  i  from TNotas where CodAlumno=vCodAlumno and CodAsignatura=vCodAsignatura and Semestre=vSemestre;
     if (i=0) then
       raise eClave;
     end if;
     update TNotas set Practica1=vPractica1,Practica2=vPractica2,NotaFinal=vNotaFinal    where CodAlumno=vCodAlumno  and CodAsignatura=vCodAsignatura and Semestre=vSemestre ;
     commit;
     DBMS_OutPut.Put_Line('Nota Actualizado correctamente');
     exception
     When eClave then
     DBMS_OutPut.Put_Line('Error: Nota no existe');  
end; 
begin
spActualizarNotas('A0010','S0010','III','20','20','20');
end;
begin
spListarNotas;
end;
----Eliminar Notas----
Create or replace procedure spEliminarNotas
(
vCodAlumno char,vCodAsignatura char,vSemestre char,vPractica1 decimal,vPractica2 decimal,vNotaFinal decimal)
is
i number;
eClave exception;
Begin
     select count(*) into  i  from TNotas where CodAlumno=vCodAlumno and CodAsignatura=vCodAsignatura and Semestre=vSemestre;
     if (i=0) then
       raise eClave;
     end if;
     Delete TNotas    where CodAlumno=vCodAlumno  and CodAsignatura=vCodAsignatura and Semestre=vSemestre ;
     commit;
     DBMS_OutPut.Put_Line('Nota Eliminada correctamente');
     exception
     When eClave then
     DBMS_OutPut.Put_Line('Error: Nota no existe');  
end;
begin
spEliminarNotas('A0010','S0010','III','20','20','20');
end;
begin
spListarNotas;

end;
PROCEDIMIENTOS ALMACENADOS  PARA LISTAR   DE TBS ANTENOR ORREGO 

---Procedimiento Almacenados --------
----------listar------- tablas----------
---listar TCarrera ----
set serveroutput on;
create or replace procedure spListarCarrera
is
cursor cCarrera is select * from TCarrera;
r  TCarrera%rowType;  
Begin 
    Open cCarrera;
      Loop
          Fetch cCarrera into r;
          Exit When cCarrera%notFound;
          DBMS_OutPut.Put_line('CodCarrera:'||r.CodCarrera);
          DBMS_OutPut.Put_line('Carrera:'||r.Carrera);
      end Loop;
    Close  CCarrera;
end;

execute spListarCarrera;






---LISTAR Usuario---
create or replace procedure splistarUsuario
is
cursor cUsuario is select * from TUsuario;
r  TUsuario%rowType;
Begin
     Open cUsuario;
        loop
            Fetch cUsuario into r;
            Exit When cUsuario%notFound;
            DBMS_OutPut.Put_Line('Usuario:'||r.Usuario);
            DBMS_OutPut.Put_Line('Contraseña:'||r.Contraseña);
        end loop;
     Close cUsuario;
end;

execute spListarUsuario;

--listar Alumno----
create or replace  procedure spListarAlumno
is
cursor cAlumno is select * from TAlumno ;
r TAlumno%rowType;
Begin
    Open cAlumno;
      loop
          Fetch cAlumno into r;
          Exit When cAlumno%notFound;
          DBMS_OutPut.Put_Line('CodAlumno:'||r.CodAlumno);
          DBMS_OutPut.Put_Line('APePaterno:'||r.APePaterno);
          DBMS_OutPut.Put_Line('APeMaterno:'||r.APeMaterno);
          DBMS_OutPut.Put_Line('Nombres:'||r.Nombres);
          DBMS_OutPut.Put_Line('FechaNac:'||r.FechaNac);
          DBMS_OutPut.Put_Line('Usuario:'||r.Usuario);
          DBMS_OutPut.Put_Line('CodCarrera:'||r.CodCarrera);
      end loop;
   Close cAlumno;
end;

execute spListarAlumno;


--listar Docente----

create or replace procedure spListarDocente
is
cursor cDocente is select  *  from TDocente order by CodDocente  asc;
r TDocente%rowType;
Begin
     Open cDocente;
       loop
           Fetch cDocente into r;
           Exit When cDocente%notFound;
           DBMS_Output.Put_Line('CodDocente:'||r.CodDocente);
           DBMS_Output.Put_Line('APePaterno:'||r.APePaterno);
           DBMS_Output.Put_Line('APeMaterno:'||r.APeMaterno);
           DBMS_Output.Put_Line('Nombres:'||r.Nombres);
           DBMS_Output.Put_Line('Usuario:'||r.Usuario);
       end loop;
     Close cDocente;
end;

execute splistarDocente;

--listar Asignatura----

create or replace procedure spListarAsignatura
is
cursor cAsignatura is select * from TAsignatura;
r TAsignatura%rowType;
Begin
     Open cAsignatura;
       loop
          Fetch cAsignatura into r;
          Exit  When cAsignatura%notFound;
          DBMS_OutPut.Put_Line('CodAsignatura:'||r.CodAsignatura);
          DBMS_OutPut.Put_Line('Asignatura:'||r.Asignatura);  
          DBMS_OutPut.Put_Line('CodRequisito:'||r.CodRequisito);  
        end loop;
      Close cAsignatura;
end;

execute spListarAsignatura;

--listar Notas----

create  or replace procedure spListarNotas
is
cursor cNotas  is select * from TNotas;
r TNotas%rowtype;
Begin
     Open cNotas;
       loop
           Fetch cNotas into r;
           Exit  when cNotas%notFound;
           DBMS_OutPut.Put_Line('CodAlumno:'||r.CodAlumno);
           DBMS_OutPut.Put_Line('CodAsigantura:'||r.CodAlumno);
           DBMS_OutPut.Put_Line('Semestre:'||r.Semestre);
           DBMS_OutPut.Put_Line('Practica1:'||r.Practica1);
           DBMS_OutPut.Put_Line('Practica2:'||r.Practica2);
           DBMS_OutPut.Put_Line('NotaFinal:'||r.NotaFinal);
       end loop;
     Close cNotas;
end;

execute spListarNotas;
          
      
--listar Carga----


create or replace procedure  splistarCarga
is
cursor cCarga is select * from TCarga;
r TCarga%rowType;
Begin
     Open cCarga;
       loop
           Fetch cCarga into r;
           Exit When cCarga%notFound;
           DBMS_OutPut.put_Line('IDCarga:'||r.IDCarga);
           DBMS_OutPut.put_Line('CodDocente:'||r.CodDocente);
           DBMS_OutPut.put_Line('CodAsignatura:'||r.CodAsignatura);
           DBMS_OutPut.put_Line('Semestre:'||r.Semestre);
       end loop;
     Close cCarga;
end;

execute spListarCarga;