Lo que te puso alberto.arevalo es cierto, la forma que te pone el es para crear directorios logicos, a partir de un directorio fisico ya creado!, su create directory es un ddl (data definition languaje) y no puede ser ejecutado directamente desde codigo plsql (igual que cualquier create, drop, truncate, etc), y por eso debes de ejecutarlo dinamicamente mediante un EXECUTE INMEDIATE.
Si quieres crear directorios fisicos, la manera mas facil que encuentro de hacero es asi:
si decis que tu server esta en windows
declare
my_Directory VARCHAR2(100);
begin
my_Directory := 'c:/temp/folder1';
DBMS_SCHEDULER.CREATE_JOB(job_name => 'Crear: '||my_Directory,
job_type => 'executable',
job_action => 'c:\windows\system32\cmd.exe /c mkdir ' || my_Directory,
enabled => true,
auto_drop => true);
commit;
end loop;
end;
/
tu usuario de esquema debe tener bastantes permisos para hacer esto........
Y como te dice alberto, no recomiendo la creacion y manejo de carpetas desde plsql, puedes crear los archivos que quieras siguiendo un orden y luego mediante un job, ejecutar algun archivo batch (windows) o shell (linux) para crear directorios y mover archivos, te complicaras menos y no tendras que hacer la maldita para que los DBA se rompan la cabeza dandote permisos a tu usuario.