lunes, 18 de abril de 2011

//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