Falla al crear un fichero

Arturoe
20 de Enero del 2006
Hola

Estoy en el inicio de una migracion de base de datos, hay una persona especialista en oracle que me esta apoyando para realizarla. Esta persona tuvo que salir de viaje y me encargo crear y ejecutar los siguientes scripts, tengo el problema que al ejecutarlos me manda el siguiente error

SQL> execute crearchclob('my_dir');
BEGIN crearchclob('my_dir'); END;

*
ERROR en línea 1:
ORA-29280: ruta de acceso del directorio no válida
ORA-06512: en "SYS.UTL_FILE", línea 18
ORA-06512: en "SYS.UTL_FILE", línea 424
ORA-06512: en "NOMINA.CREARCHCLOB", línea 19
ORA-06512: en línea 1

Los siguientes son los scripts que me pidio ejecutar. Me prodrian ayudar para ver que es lo que esta mal. Gracias

CREATE OR REPLACE DIRECTORY MY_DIR AS 'C:proc'
/
CREATE OR REPLACE PROCEDURE CREARCHCLOB (
my_dir IN VARCHAR2) IS

file UTL_FILE.FILE_TYPE;

filedato VARCHAR2(30):='M4SYS_OBJS32.txt';

-- En este cursor se obtiene los campos a subir
-- Se cambia el nombre de la tabla si se quiere cargar alguna otra tabla

CURSOR tabla IS
SELECT *
FROM M4SYS_OBJETOS32;

BEGIN

-- Este es arhivo donde se cargaran los datos

file := UTL_FILE.FOPEN(my_dir,filedato,'w');

FOR params IN tabla LOOP

-- El formato de la fecha se extrae de acuerdo al tipo de dato en DB2, en este caso es timestamp
-- Si fuera date por ejemplo seria DD-MM-YYY
-- Notese que de acuerdo a la estructura de tabla falta el campo comments, no lo inclui ya que esta nulo
-- y no tiene caso cargarlo en este caso en especifico
-- De igual forma en este archivo en vez de incluir el clob, se incluye en nombre del archivo que llevara el CLOB
-- Este nombre del archivo debe ser identico al que se crean el procedimiento OBTIENECLOB
-- Asegurarse que el nombre del archivo sea único para cada registro
-- Si se modifica para otra tabla, la creacion del nombre del archivo debiera cambiar
-- la cantidad de caracteres en blanco que se pegan esta de acuerdo a la descripcion de la tabla

UTL_FILE.PUT_LINE(file,
rpad(params.id_objeto,30,' ')||
rpad(params.id_extension,3,' ')||
rpad(params.id_tipo_syscli,10,' ')||
rpad(params.n_objeto,40,' ')||
rpad(params.id_idioma,50,' ')||
rpad(params.origen,10,' ')||
rpad(params.id_ver_obj,15,' ')||
rpad(params.id_ver_min_dll,15,' ')||
rpad(params.id_usuario,40,' ')||
to_char(params.fec_ult_actualizac,'DD-MM-YYYY-HH24:MI:SS')||
'OB32'||substr(params.id_objeto,1,5)||substr(params.id_extension,1,3)
);

END LOOP;

UTL_FILE.FCLOSE(file);

END;
/

CREATE OR REPLACE PROCEDURE OBTIENECLOB (
my_dir IN VARCHAR2) IS

file UTL_FILE.FILE_TYPE;

filename VARCHAR2(15);

-- En este cursor se obtiene los campos a subir
-- Se cambia el nombre de la tabla si se quiere cargar alguna otra tabla

CURSOR tabla IS
SELECT *
FROM M4SYS_OBJETOS32;

BEGIN

FOR params IN tabla LOOP

-- Se crea un archivo y se forma el nombre de archivo de manera descriptiva a la tabla, registro para el CLOB
-- Este nombre del archivo debe ser identico al que se se hace referencia en CREARCHCLOB
-- Si se modifica para otra tabla, la creacion del nombre del archivo debiera cambiar

filename := 'OB32'||substr(params.id_objeto,1,5)||substr(params.id_extension,1,3);

file:=UTL_FILE.FOPEN(my_dir,filename,'w');

UTL_FILE.PUT_LINE(file,params.parametros);

UTL_FILE.FCLOSE(file);

END LOOP;


END;
/

amigos
20 de Enero del 2006
para ejecutar el fichero debes darle todo el path