//Creo la tabla oficina
create table OFICINA (
NUMOFICINA CHAR(4) not null,
CALLE CHAR(30),
CIUDAD CHAR(25),
CODIGOPOSTAL CHAR(10),
constraint PK_OFICINA primary key (NUMOFICINA)
);
----------------------------------------------------------------------------------------------
//Diseñar un PA para Modificar la tabla oficina agregándole la columna Direccion.
create or Replace PROCEDURE agregarDireccion
as
BEGIN
execute immediate 'alter table Oficina
add Direccion varchar2(40)';
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Error en agregar atributo');
END;
-----------------------------------------------------------------------------------------------
//Compruebo que en mi tabla "Oficina" este el atributo "Direccion" agregado.
DESCRIBE OFICINA
-----------------------------------------------------------------------------------------------
create or Replace PROCEDURE agregarDireccion
as
BEGIN
execute immediate 'alter table Oficina
add Direccion varchar2(40)';
EXCEPTION
when NO_DATA_FOUND then
dbms_output.put_line('se gatilla NO_DATA_FOUND');
WHEN OTHERS THEN
dbms_output.put_line('se gatilla OTHERS supongo porque La tabla OFICINA no existe');
END;
bibliografia de errores que se le pueden agregar:
http://www.devjoker.com/contenidos/Tutorial-PLSQL/48/Excepciones-en-PLSQL.aspx
-----------------------------------------------------------------------------------------------
//Escriba un programa que gatille una excepción al tratar de eliminar un registro inexistente.
create or replace PRODECURE eliminarRegistro (pnumOficina oficina.numOficina%type)
is
vnumoficina oficina.numoficina%type;
begin
select numoficina into vnumoficina
from oficina
where numoficina = pnumOficina;
delete from oficina
when numOficina = pnumOficina;
exception
when NO_DATA_FOUND then
dbms_output.put_line('Registro :' || pnumoficina || ' No existe para eliminarlo);
End;
-----------------------------------------------------------------------------------------------
//Crear una función de calcule el total de empleados por Oficina.
create or replace FUNCTION CuentaEmpleados (pnumOficina oficina.numOficina%type)
return interger;
as
vtotEmpleados interger :=0;
vnumoficina oficina.numoficina%type;
begin
select numoficina into vtotEmpleados
from oficina
where numoficina = pnumOficina;
select count(numoficina) int vtotEmpleados
from empleados
where numoficina = pnumOficina;
return vtotEmpleados;
exception
when NO_DATA_FOUND then
dbms_output.put_line('Oficina :' || pnumoficina || ' No existe');
return 0;
End;
No hay comentarios.:
Publicar un comentario