Suma binarias
Enviado por Teo Corsa • 17 de Septiembre de 2015 • Ensayo • 1.026 Palabras (5 Páginas) • 244 Visitas
EXAMEN DE CASA DE BASES DE DATOS AVANZADAS TERCER PARCIAL
Teodoro Cortes Sanchez
1. ¿Para que se usa la excepción E_SIN_ALUMNOS?
declare
e_sin_alumnos EXCEPTION ;
num_alumnos number(5);
begin
select count(*) into num_alumnos from ALUMNOS where NUMEROCUENA<>0;
if num_alumnos =0 then
RAISE e_sin_alumnos;
End if;
Exception
When e_sin_alumnos then
Insert into temporal values (num_alumnos,to_char(sysdate)||’No hay alumnos’);
End;
/
En el código excepción se usa cuando un parámetro no se encuentra en nuestro registro de alumnos , después hace una inserción en la tabla temporal y manda mensaje de no hay alumnos.
2. Declare
Cursor C1 is
Select NUMEROCUENTA, NOMBREALUMNO from ALUMNO order by 2;
Begin
Delete temporal;
For i in C1 Loop
Insert into temporal values (i.NUMEROCUENTA, i.NOMBREALUMNO);
Commit;
End loop;
End;
/
Nuestro bloque anónimo vamos a declarar un curso , vamos a seleccionar los campos de cuenta y nombre de los alumnos, vamos a eliminar todos los datos de nuestra tabla temporal y después un ciclo for con un loop y después los guardamos un cambio con commit.
3. Modifica la función para CONVERTIR los valores de los campos En parámetros y no SEAN constantes.
create or replace function Inserta_Persona return TIPODATO.TSALIDA is
cursorsalida TIPODATO.TSALIDA;
error varchar(100):=null;
begin
begin
insert into ALUMNOS values (5,'Juan','CALLLE 3, sysdate);
exception
when DUP_VAL_ON_INDEX then
error:=sqlerrm;
end;
if error is not null then
open cursorsalida for
select substr(error,1,100) Error from dual;
else
open cursorsalida for
select 'Insertó correctamente ' Correcto from dual;
commit;
end if ;
return cursorsalida;
end;
/
4. Menciona para que se utiliza NOMBREDEMATERIA en el siguiente código.
create or replace function ConsultaMateria_E(idmat number)
return TIPODATO.TSALIDA is
cursorsalida TIPODATO.TSALIDA;
cadena varchar(100):=null;
error_exception Exception;
materiadesc materiaS.NOMBREMATERIA%type:=null;
begin
begin
select NOMBREMATERIA into materiadesc from MATERIAS where CLAVE =idmat;
exception
when others then materiadesc:='No encontró Registros';
end;
if materiadesc is not null then
RAISE error_exception;
Else
open cursorsalida for
select materiadesc NOMBREDEMATERIA from dual;
return cursorsalida;
End if;
Exception
When error_exception then
open cursorsalida for
select materiadesc NOMBREDEMATERIA from dual;
return cursorsalida;
end;
/
En este campo vamos a mostrar en nuestra pantalla de sql el cursos de return en valor de salida
5. DECLARE
CURSOR c1 is
SELECT NUMEROCUENTA, NOMBREALUMNO, FECHANACIMIENTO FROM persona ORDER BY FECHANACIMIENTO DESC;
VNUMEROCUENTA ALUMNOS.NUMEROCUENTA%TYPE;
VNOMBREALUMNO ALUMNOS. NOMBREALUMNO %TYPE;
VFECHANACIMIENTO DATE;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO VNUMEROCUENTA , VNOMBREALUMNO , VFECHANACIMIENTO ;
EXIT WHEN (c1%ROWCOUNT > 5) OR (c1%NOTFOUND);
INSERT INTO temporal VALUES (VNUMEROCUENTA , VNOMBREALUMNO );
COMMIT;
END LOOP;
CLOSE c1;
END;
/
Nuestro bloque anónimo vamos a declarar un cursos, después vamos a seleccionar número de cuenta nombre del alumno y fecha de nacimiento en orden descendente realiza un ciclo donde esos campos los almacena en variables para insertarlos en tabla temporal realizar un commit terminar el ciclo y termina el cursor
6. DECLARE
CURSOR c1 IS
select CLAVE, NOMBREATERIA from MATERIA where CREDITOS is not null order by NOMBREMATERIA ;
BEGIN
delete temporal;
FOR i IN c1 LOOP
insert into temporal values (i.clave+10, i.nombremateria);
commit;
END LOOP;
END;
/
Después nuestro cursor donde selecciona clave de nuestra base y nombre de materia elimina los registros de la tabla temporal inicia un ciclo para insertar nuevos valores a esta tabla donde ahora será la clave+10 y el nombre de la materia a insertar guardas los cambios y cierras el ciclo y termina tu cursor
...