Pular para o conteúdo
Visualizando 1 post (de 1 do total)
  • Autor
    Posts
  • #101929
    airoosp
    Participante

      Boa tarde,

      Estou fazendo testes na procedure abaixo para incluir o conteúdo de um arquivo texto em uma tabela com campo tipo BLOB.
      Se eu definir um directory apontando para uma pasta que esta no servidor a inclusão através da procedure abaixo funciona.

      Agora como faço para passar para a procedure um arquivo que esta na minha máquina e não no servidor?

      Banco 9i.

      CREATE OR REPLACE Procedure Incluir_Arquivo
      (
      pCaminho IN VARCHAR2, — pasta que contém o arquivo
      pId_Sub_Sistema IN NUMBER,
      pDescricao IN VARCHAR2, — nome do arquivo texto
      pData_Inicio IN DATE,
      pData_Fim IN DATE,
      pStatus IN CHAR,
      pId_Funcionario IN Number
      )

      IS

      out_blob blob;
      blob_length integer;
      v_contador integer;
      in_file bfile := BFILENAME(pCaminho, pDescricao);

      BEGIN

      — Obtain the size of the blob file
      DBMS_LOB.FILEOPEN(in_file, DBMS_LOB.FILE_READONLY);
      blob_length:=DBMS_LOB.GETLENGTH(in_file);
      DBMS_OUTPUT.PUT_LINE(‘File Size: ‘ || blob_length);
      DBMS_LOB.FILECLOSE(in_file);

      — Insert a new record into the table containing the
      — filename you have specified and a LOB LOCATOR.
      — Return the LOB LOCATOR and assign it to out_blob.

      –teste
      Insert into seid.arquivo
      (arquivo_txt,
      id_sub_sistema,
      descricao,
      data_inicio,
      data_fim,
      status,
      alterado_por)
      Values
      (EMPTY_BLOB(),
      pId_Sub_Sistema,
      pDescricao,
      pData_Inicio,
      pData_Fim,
      pStatus,
      pId_Funcionario)
      RETURNING arquivo_txt INTO out_blob;

      — Load the image into the database as a BLOB
      DBMS_LOB.OPEN(in_file, DBMS_LOB.LOB_READONLY);
      DBMS_LOB.OPEN(out_blob, DBMS_LOB.LOB_READWRITE);
      DBMS_LOB.LOADFROMFILE(out_blob, in_file, blob_length);

      — Close handles to blob and file
      DBMS_LOB.CLOSE(out_blob);
      DBMS_LOB.CLOSE(in_file);

      commit;
      EXCEPTION
      WHEN OTHERS THEN
      raise_application_error(-20001,
      ‘An error was encountered – ‘ || SQLCODE ||’ -ERROR- ‘ || SQLERRM);

      END Incluir_Arquivo;

      Obrigado.

      Airton

    Visualizando 1 post (de 1 do total)
    • Você deve fazer login para responder a este tópico.
    plugins premium WordPress