• Viernes 15 de Noviembre de 2024, 02:08

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Diclonius

Páginas: [1]
1
Oracle / Re: Problema Con Member Function
« en: Viernes 22 de Julio de 2005, 21:41 »
Aunque eso es valido, es inutil bajo el concepto de OO, ya que no estoy encapsulado las funcionalidades que quiero, imagina que quiero que la funcion actualize 15 propiedades y que el objeto lo utilizaran en 50 programas, cada uno de los programas tendria que encargarse de actualizar las 15 propiedades !!!

Lo que dices de que los procedimiento modifican datos y las funciones no, lo recuerdo de lenguajes muuy antiguos, no quiero creer que los Objetos de Oracle tengan estas restricciones, tendria que trabajar solo con procedimientos, lo que seria muy poco elegante... <_<

2
Oracle / Re: Imposibilidad De Generar Archivo Con Utl_file
« en: Viernes 22 de Julio de 2005, 21:22 »
Hola, yo trabaje hace poco con el UTL_FILE y mandar el directorio completo no da problemas, los ALIAS se ocupan con los BFILE..

Yo creo que tu problema puede estar en que Oracle tiene que estar autorizado para escribir en el directorio y esto se consigue  modificando el archivo INIT.ORA de la base de datos

"

Cada uno de los directorios accesibles se indican mediante una línea como la que sigue:

   UTL_FILE_DIR=nombre directorio

La especificacion del nombre del directorio variara, dependiendo del sistema operativo. Si el sistema operativo diferencia entre mayusculas y minusculas, entonces nombre_directorio tambien diferenciara.

Por ejemplo, para un sistema UNIX, las siguientes instrucciones son correctas, suponiendo que los directorios especificados existan.

   UTL_FILE_DIR = /tmp
   UTL_FILE_DIR = /home/oracle/output_files

Para acceder a un archivo con UTL_FILE, el nombre del directorio y el nombre del archivo se pasan como parametros separados a la funcion FOPEN. El nombre del directorio se compra con la lista de archivos accesibles, si se encuentra entonces se autoriza la operacion, Si el nombre de directorio especificado por FOPEN no es accesible, se devuelve un error.


Si el archivo INIT.ORA contiene

   UTL_FILE_DIR = *

los permisos de la base de datos se desabilitan lo que hace que todos los directorios sean accesibles para UTL_FILE (muuy riesgoso   :devil:  ).

3
Oracle / Problema Con Member Function
« en: Viernes 22 de Julio de 2005, 21:03 »
Hola, estoy empezando a trabajar con objetos en Oracle8i, y tengo un problema al tratar de actualizar una propiedad del objeto.

Por ejemplo si trabajo con un procedimiento, el procedimiento puede actualizar la propiedad miembro del objeto

********************** FUNCIONA **************************

CREATE OR REPLACE TYPE TO_TEST_P AS OBJECT
( CAMPO1 NUMBER(15,5),
  MEMBER PROCEDURE CHANGE_CAMPO1);
 
CREATE OR REPLACE TYPE BODY TO_TEST_P AS
   MEMBER PROCEDURE CHANGE_CAMPO1 IS
   BEGIN
     CAMPO1:=7;
     RETURN;
   END CHANGE_CAMPO1;
END;  
 
DECLARE
  OBJETO TO_TEST_P;
BEGIN
  OBJETO:=TO_TEST_P(1);
  OBJETO.CHANGE_CAMPO1;
  dbms_output.put_line('El procedimiento cambio el valor de la propiedad Campo1 a:['||Objeto.Campo1||']');
END;

***************************************************************

Pero si quisiera actualizar el dato con una funcion, me da error  <_<  , probe tambien creando un procedimiento para que la funcion llamara al procedimiento y este actualizara, pero tampoco funciona.. es que acaso las funciones no pueden alterar datos del objeto?
Si pongo en comentario la linea que actualiza el campo, la funcion trabaja sin problemas.





************ NO FUNCIONA ****************************

CREATE OR REPLACE TYPE TO_TEST_F AS OBJECT
( CAMPO1 NUMBER(15,5),
  MEMBER FUNCTION CHANGE_CAMPO1 RETURN NUMBER);
 
CREATE OR REPLACE TYPE BODY TO_TEST_F AS
   MEMBER FUNCTION CHANGE_CAMPO1 RETURN NUMBER IS
   BEGIN
     CAMPO1:=8; -- Si se comentaria esta linea funciona.
     RETURN 2;
   END CHANGE_CAMPO1;
END;  
 
DECLARE
  OBJETO TO_TEST_F;
  RESULT NUMBER;
BEGIN
  OBJETO:=TO_TEST_F(1);
  RESULT:=OBJETO.CHANGE_CAMPO1;
  dbms_output.put_line('La funcion cambio el valor de la propiedad Campo1 a :['||Objeto.Campo1||']');
END;

**************************************************************
El Error

ORA-04068: existing state of packages has been discarded
ORA-04063: stored procedure "SWBAPPS.TO_TEST_F" has errors
ORA-06508: PL/SQL: could not find program unit being called
ORA-06512: at line 6




Gracias...

Páginas: [1]