Bases de Datos > Oracle

 Exportar Un Clob

(1/2) > >>

lcauso:
Buenos días, estoy intentado exportar el valor de un CLOB a un fichero de S.O pero me estoy encontrando con errores.
Primeramente he creado un directorio:
    SQL> create directory PRUEBA_VISTA2 as 'c:\temp';
y he dado permisos al usuario que va a realizar la operacion:
SQL> grant read,write on PRUEBA_VISTA2 to oficinaadm;
grant read,write on PRUEBA_VISTA2 to oficinaadm
                    *
ERROR en línea 1:
ORA-00942: table or view does not exist


SQL> grant read,write on directory PRUEBA_VISTA2 to oficinaadm;
Este es mi procedimiento:
     declare
       fichero utl_file.file_type;
       texto clob;
       cantidad binary_integer:=32767;
       posicion integer:=1;
       texto_l varchar2(32767);
begin
  select campo1 into texto from tabla1;
  fichero:=utl_file.fopen('PRUEBA_VISTA', 'texto.txt','w',32767);
   LOOP
    DBMS_LOB.read (texto, cantidad, posicion, texto_l);
    UTL_FILE.put(fichero, texto_l);
    posicion := posicion + cantidad;
  END LOOP;
  utl_file.fclose(fichero);
end;
/

lcauso:
continuacion del anterior
Cuando lo ejecuto obtengo el siguiente error:
    declare
    *
    ERROR en línea 1:
    ORA-29283: invalid file operation
    ORA-06512: at "SYS.UTL_FILE", line 449
    ORA-29283: invalid file operation
   ORA-06512: at line 11
parece como si no reconociera el directorio creado.

¿ALGUIEN SABE COMO RESOLVERLO?

Muchas gracias

JuanK:

--- Código: Text --- SQL> create directory PRUEBA_VISTA2 as 'c:\temp';y he dado permisos al usuario que va a realizar la operacion:SQL> grant read,write on PRUEBA_VISTA2 to oficinaadm;grant read,write on PRUEBA_VISTA2 to oficinaadm*ERROR en línea 1:ORA-00942: table or view does not exist  SQL> grant read,write on directory PRUEBA_VISTA2 to oficinaadm;Este es mi procedimiento:declarefichero utl_file.file_type;texto clob;cantidad binary_integer:=32767;posicion integer:=1;texto_l varchar2(32767);beginselect campo1 into texto from tabla1;fichero:=utl_file.fopen('PRUEBA_VISTA', 'texto.txt','w',32767);LOOPDBMS_LOB.read (texto, cantidad, posicion, texto_l);UTL_FILE.put(fichero, texto_l);posicion := posicion + cantidad;END LOOP;utl_file.fclose(fichero);end;/ 
ummm
1 - no estoy seguro... pero no uede tener un varchar2 tan grande:
texto_l varchar2(32767);
2- le has dado permisos al directorio: PRUEBA_VISTA2

SQL> grant read,write on directory PRUEBA_VISTA2 to oficinaadm;

pero usas PRUEBA_VISTA

fichero:=utl_file.fopen('PRUEBA_VISTA', 'texto.txt','w',32767);

eso por el momento

lcauso:
Hola JuanK:

   La creación del directorio es correcta y los permisos están bien asignados (en el ejemplo me equivoque al poner PRUEBA_VISTA2).

El problema es que no me reconoce el directorio, ¿es necesario modificar el parametro UTL_FILE_DIR del fichero INIT.ORA para que apunte a la ruta del directorio indicado en PRUEBA VISTA?.

Gracias

lcauso:
Hola de nuevo,
  además de la creacion del directorio es necesario que el parametro UTL_FILE_DIR tenga el path del directorio donde se va a crear el fichero. A si que ya he conseguido ejecutar mi procedimiento exportando el valor de un campo CLOB a un fichero utilizando UTL_FILE.

Ahora tengo un problema porque se me llena el temporal, ¿alguien sabe como se libera el espacio en el tablespace temporal?

Gracias

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa