01.Blogs :
mauriciogonzatto  
.NET, C#, Oracle, Web, tecnologia em geral e diversidades.

Ler Arquivo em campo CLOB

Algumas vezes precisamos ler determinados arquivos texto com uma grande quantidade de caracteres, que não seja suportada pelos campos VARCHAR2 então recorremos ao campo CLOB que pode armazenar grandes quantidades de caracteres, então devemos criar um ponteiro para o diretório do arquivo dentro do Oracle:

INSERT INTO ALL_DIRECTORIES (DIRECTORY_PATH, DIRECTORY_NAME) VALUES ('TEU_PATH', 'TEU_ATALHO');

Crie uma tabela onde poderão ser armazenados os dados:

CREATE TABLE TEST_CLOB
(
  ID         NUMBER(15),
  FILE_NAME  VARCHAR2(1000 BYTE),
  ARQUIVO    CLOB,
  TIMESTAMP  DATE
);


Depois criamos a função:


-- arq : Nome do arquivo
-- dir : Nome da ponte criada na tabela ALL_DIRECTORIES
FUNCTION FLEARQUIVO( arq IN varchar2, dir IN varchar2 )
  RETURN clob IS
BEGIN
DECLARE
    arquivo BFILE;

    dest_clob   CLOB;
    dst_offset  number := 1 ;
    src_offset  number := 1 ;
    warning     number;
   
    BEGIN
   
        arquivo := BFILENAME( dir, arq );
       
        INSERT INTO test_clob(id, file_name, arquivo, timestamp)
        VALUES(1001, arq, empty_clob(), sysdate)
        RETURNING arquivo INTO dest_clob;
       
        DBMS_LOB.OPEN(arquivo, DBMS_LOB.LOB_READONLY);
       
        DBMS_LOB.LoadFromFile(
          DEST_LOB => dest_clob
        , SRC_LOB  => arquivo
        , AMOUNT   => DBMS_LOB.GETLENGTH( arquivo ) );
       
        DBMS_LOB.CLOSE( arquivo );
       
        commit;

        RETURN dest_clob;
    END;
END;

[]'s

posted on Friday, May 26, 2006 5:25 AM by mauriciogonzatto


 
03.UPDATE CALENDAR :
<May 2006>
SunMonTueWedThuFriSat
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

05.MY LINKS :

07.Subscriptions :

Subscriptions


© Copyright 2005 Microsoft Corporation. All Rights Reserved.
Terms of Use | Privacy Statement | Code of Conduct | Hosted by MaximumASP for Microsoft
WHO-BAR