Oracle

Ese era el experto?

Hace un tiempo estaba en un proyecto revisando unos procedimientos que necesitarían algunos cambios, se tenían algunos cambios debido que ahora tomarían información de la EBS (E-bussiness Suite de Oracle) y no de los sistemas actuales hechos en casa por la empresa.

Al revisarlos pensaba que la persona que los desarrollo era una persona sin experiencia y con poco tiempo trabajando con Oracle, pero ho sorpresa, cuando pregunte por el autor de esos procesos resulto ser el “experto” en el área, no quise ser abiertamente inquisitivo por respeto a la persona y me reserve mis comentarios, pero es que es casi increíble que una persona que se diga experto no tenga ni siquiera la mínima intención (o tal vez habilidad) de generar un buen trabajo.

No voy a hablar de todos los detalles por los que a fin de cuentas se deducía que realmente conocía muy poco del tema, pero un error que tenían todos sus procesos, es:

Todos los procesos manejaban archivos mediante UTL_FILE, pero todos los procesos tenían la apertura y manejo de excepciones de UTL_FILE en el mismo proceso, lo que generaba muchas lineas de código extras en todos los procesos, claro totalmente innecesarias, lo mas fácil es generar un procedimiento:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CREATE OR REPLACE PROCEDURE abre_archivo (in_archivo  IN  VARCHAR2,
                                          in_mode     IN  VARCHAR2,
                                          fHandle     OUT UTL_FILE.FILE_TYPE) IS
BEGIN  
   fHandle := UTL_FILE.FOPEN('CARGAS', in_archivo, in_mode, 32767);  
EXCEPTION WHEN UTL_FILE.INVALID_PATH THEN  
   RAISE_APPLICATION_ERROR(-20100,'Invalid Path');  
WHEN UTL_FILE.INVALID_MODE THEN  
   RAISE_APPLICATION_ERROR(-20101,'Invalid Mode');  
WHEN UTL_FILE.INVALID_OPERATION THEN  
   RAISE_APPLICATION_ERROR(-20102,'Invalid Operation');  
WHEN UTL_FILE.INVALID_FILEHANDLE THEN  
   RAISE_APPLICATION_ERROR(-20103,'Invalid Filehandle');  
WHEN UTL_FILE.WRITE_ERROR THEN  
   RAISE_APPLICATION_ERROR(-20104,'Write Error');  
WHEN UTL_FILE.READ_ERROR THEN  
   RAISE_APPLICATION_ERROR(-20105,'Read Error');  
WHEN UTL_FILE.INTERNAL_ERROR THEN  
   RAISE_APPLICATION_ERROR(-20106,'Internal Error');  
WHEN OTHERS THEN  
   UTL_FILE.FCLOSE(fHandle); 
END; 
/

en el proceso que necesites abrir un archivo lo llamas de la forma:

1
2
3
4
5
DECLARE
  fHandle          UTL_FILE.FILE_TYPE; 
BEGIN
  abre_archivo('archivo', 'w', fHandle);
END;

Listo, te ahorras muchas lineas de código, modularizas tus procesos, realizas un mejor trabajo, te facilitas la vida.

4 thoughts on “Ese era el experto?

  1. Oye producto de lavaderia, tienes algun paquezote basado en oracle que sirva para mover archivos binarios (pdf,word y loquesea) a directorios de la base de datos mediante ftp, he realizado pruebas con el UTL_FILE & UTL_FTP y todo parece bien el archivo aparece copiado en el directorio pero tomala al quererlo abrir “Errorzote”.

    Con TXTs todo de peluche pero con binarios nanais.. o ke opcion recomiendas… la idea es trabajar con archivos de un directorio de oracle (bfile) de modo RW de un server web a a la BD… espero tus comentarios.

  2. no nada que ver, si andas medio perdido, incluso en html y xml nunca se usa un compilador, creo que te refieres a una herramienta como dreamweaver o en general cualquiera del tipo que cuando la usas en modo visual te mete infinidad de tablas y genera un codigo del asco, yo la uso pero nunca para generar codigo, saludos

  3. Parece como si estuviera usando un compilador que mete toda esa basura no?

    No soy un experto en Oracle pero si en HTML y XML y eso pasa mucho cuando en vez de hacer el coding directo lo hacen por un compiler.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *