Ayuda

Joana
01 de Junio del 2006
Hola soy principiante en Oracle y necesito ayuda con la creación de procedimientos:
Considere la tabla de CIUDADES con la siguiente descripci6n:
Name Null? Type
------------------------------- ----
CODIGO CIUDAD NOT NULL VARCHAR2(4)
NOMBRE CIUDAD NOT NULL VARCHAR2(45)
AREA- ESTADO- PROV VARCHAR2(6)
CODIGO PAIS NOTNULLVARCHAR2~)

1- Crea un procedimiento que haga lo siguiente en forma interactiva:
Inserte N cantidad de datos a la tabla.
Elimine N cantidad de datos de la Tabla.
Actualice N cantidad de datos de la tabla.
Imprimir las ciudades que empiecen con la letra A.
Control por medio de las excepciones si se viola algun tipo de constraint en
este caso imprima el código de error y su descripción.
Le agradeceria su ayuda, ya que existe poco codigo de oracel en la web al que puedo referenciar.

Rodolfo Reyes
01 de Junio del 2006
Creo que optando por buenas prácticas de programación no es correcto hacer un procedimiento o función que realiza muchas tareas. En tu caso, te aconsejaría que crearas 4 procedimientos, una para cada tarea (insertar, actualizar, eliminar, consultar).

Podrías hacer cuatro procedimientos por separado o también podrías crear un paquete el cual contenga todos los procedimientos y funciones necesarias para el mantenimiento de la tabla.

Un ejemplo de como hacer el procedimiento de insert:

create o replace procedure esquema.ciudades_insertar(I_codigo varchar, I_NOMBRE VARCHAR, I_AREA VARCHAR, I_PAIS VARCHAR) IS

begin
insert into ciudades(codigo,nombre,area,pais)
values(i_codigo,i_nombre,i_area,i_pais);

end;
/

El manejo de excepciones se hace por medio de:

Exception when EXPRESION then
aqui escribes que quieres hacer cuando se dispare esta execption

por ejemplo en el insert podrias poner:

--Esto captura cuando ya existe un registro
--con la llave primaria que estas tratando de insertar
exception when dup_val_on_index
RAISE_APPLICATION_ERROR (num=> -20107,
msg=> 'Llave primaria duplicada' );


Pero mi consejo es que dejes que Oracle maneje este tipo de exceptiones y que el te devuelva sus propios codigos de error.

Alex
01 de Junio del 2006
Rodolfo, creo que te confundes y confundes gravemente a Joana.
¿ Como vas a hacer un procedimiento por cada operación sobre una tabla ?
Imaginate un aplicativo pequeño, de 100 tablas por ejemplo. Según tú ¿ tienes que hacer 300 procedimientos para el mantenimiento de las tablas ?.
¿ Y cuantos mas para la lógica de negocio ?
Eso es infumable, Tio.

Para tomar un primer contacto con la programacion estructurada está bien, pasar parametros, retornar valores, etc etc., pero solo eso, un primer contacto nada mas

Jon
01 de Junio del 2006
Dedicate a fregar los platos, bonita