Ola amigos

 

Estou a tentar correr esta procedure e da-me este erro, alguém me pode
ajudar?

 

ORA-29283: invalid file operation

ORA-06512: at "SYS.UTL_FILE", line 475

ORA-29283: invalid file operation

ORA-06512: at "CARLOSPINTO.CRIARTESTE", line 38

ORA-06512: at line 2

 

 

 

 

O parâmetro é k:\teste

 

 

CREATE OR REPLACE PROCEDURE CARLOSPINTO.CriarTeste IS

 

   CURSOR c_Param(pc_param VARCHAR2) 

      IS

     SELECT valor 

       FROM alertran42.PAR 

       WHERE parametro = pc_param; 

 

   CURSOR c_telefones

        is

      SELECT nome, localidade, sector, telefone, telefone_2, terminal

        FROM telefones;

 

    v_ficheiro_criado   BOOLEAN;

 

    v_directorio        VARCHAR2(100);

    v_NomeFicheiro      VARCHAR2(2000);

    v_Ficheiro_UTL      UTL_FILE.FILE_TYPE;

 

    v_linha             VARCHAR2(2000);

 

   BEGIN

      OPEN c_Param('PARAMCARLOS');

      FETCH c_Param INTO v_directorio;

      CLOSE c_Param;

 

       v_ficheiro_criado := FALSE;

 

       FOR r_telefones IN c_telefones LOOP

 

             IF NOT v_ficheiro_criado THEN

                -- No se habia creado todavia el fichero (para evitar
fichero vacios).

                   v_ficheiro_criado := TRUE; 

                   v_NomeFicheiro  := 'TELEFONE' || sysdate;

                   

-- dbms_output.put_line(V_NOMEFICHEIRO);

                    

                   v_Ficheiro_UTL := UTL_FILE.FOPEN(v_directorio,
v_NomeFicheiro, 'W');

             END IF;

 

             v_linha := NULL;

 

             v_linha := r_telefones.nome                    || CHR(9);

             v_linha := v_linha || r_telefones.localidade   || CHR(9);

             v_linha := v_linha || r_telefones.sector       || CHR(9);

             v_linha := v_linha || r_telefones.telefone     || CHR(9);

             v_linha := v_linha || r_telefones.telefone_2   || CHR(9);

             v_linha := v_linha || r_telefones.terminal     || CHR(9);

 

             UTL_FILE.PUT_LINE(v_Ficheiro_UTL, v_linha);

 

       END LOOP;

 

       IF v_ficheiro_criado THEN

            -- Hemos generado un fichero.

            --   => Lo cerramos 

            UTL_FILE.FCLOSE(v_Ficheiro_UTL);

       END IF;

 

       COMMIT;

   

end CriarTeste;

 

 

 

Obrigado a todos.

 

Carlos



[As partes desta mensagem que não continham texto foram removidas]

Responder a