CREATE OR REPLACE PROCEDURE RETRIEVE_LOB IS
TEMP_BLOB BLOB;
DATA_BUFFER RAW(32767);
TEMP_BUFFER VARCHAR2(1);
AMOUNT BINARY_INTEGER := 1;
POSITION INTEGER := 1;
FILEHANDLE UTL_FILE.FILE_TYPE;
ERROR_NUMBER NUMBER;
ERROR_MESSAGE VARCHAR2(100);
LENGTH_COUNT INTEGER;
BEGIN
SELECT TEXTO INTO TEMP_BLOB FROM TESTE WHERE ROWNUM = 1;
LENGTH_COUNT := DBMS_LOB.GETLENGTH(TEMP_BLOB);
DBMS_OUTPUT.PUT_LINE('INTERNAL LOB SIZE IS: ' || LENGTH_COUNT);
FILEHANDLE := UTL_FILE.FOPEN('DIRLOB', 'ARQUIVO.PDF', 'W', 32760);
WHILE LENGTH_COUNT <> 0 LOOP
DBMS_LOB.READ(TEMP_BLOB, AMOUNT, POSITION, DATA_BUFFER);
UTL_FILE.PUT_RAW(FILEHANDLE, DATA_BUFFER, TRUE);
POSITION := POSITION + 1;
LENGTH_COUNT := LENGTH_COUNT - 1;
DATA_BUFFER := NULL;
END LOOP;
DBMS_OUTPUT.PUT_LINE('EXIT THE LOOP');
UTL_FILE.FCLOSE(FILEHANDLE);
DBMS_OUTPUT.PUT_LINE('CLOSE THE FILE');
EXCEPTION
WHEN OTHERS THEN
BEGIN
ERROR_NUMBER := SQLCODE;
ERROR_MESSAGE := SUBSTR(SQLERRM, 1, 100);
DBMS_OUTPUT.PUT_LINE('ERROR #: ' || ERROR_NUMBER);
DBMS_OUTPUT.PUT_LINE('ERROR MESSAGE: ' || ERROR_MESSAGE);
UTL_FILE.FCLOSE_ALL;
END;
END;
[Dica] Finalmente como tirar arquivo BLOB e jogar no Disco
-
- Rank: Programador Sênior
- Mensagens: 60
- Registrado em: Ter, 17 Jan 2006 1:45 pm
- Localização: Santa Catarina
Att.:
Alan Juliano Metzger
Programador Oracle
Inside System Informática
Msn/E-mail: alanjuliano@yahoo.com.br
Alan Juliano Metzger
Programador Oracle
Inside System Informática
Msn/E-mail: alanjuliano@yahoo.com.br
Boa Tarde galera depois de muita procura e muito suador consegui tirar um arquivo de um campo BLOB e jogar para o disco no Oracle 9i, que tem limitação de 32k, porém com a rotina que mando abaixo você pode ter o arquivo que for do tamanho que for.
- alef
- Rank: Analista Pleno
- Mensagens: 119
- Registrado em: Ter, 06 Nov 2007 2:45 pm
- Localização: Patos de Minas - MG
Alexandre Matos
Patos de Minas - MG
Do interior de Minas para o resto do Mundo
Patos de Minas - MG
Do interior de Minas para o resto do Mundo
meguelito
testei sua procedure infelizmente com jpg ela não funciona ela distorce completamente as cores da imagem. você sabe porque? seria erro da versão do banco?
eu uso o 9.2.0.1
no 10g XE funcionou 100% mas no 9 num vai nem que a vaca tussa.
obrigado,
e espero que possa me ajudar
testei sua procedure infelizmente com jpg ela não funciona ela distorce completamente as cores da imagem. você sabe porque? seria erro da versão do banco?
eu uso o 9.2.0.1
no 10g XE funcionou 100% mas no 9 num vai nem que a vaca tussa.
obrigado,
e espero que possa me ajudar
-
- Rank: Programador Sênior
- Mensagens: 60
- Registrado em: Ter, 17 Jan 2006 1:45 pm
- Localização: Santa Catarina
Att.:
Alan Juliano Metzger
Programador Oracle
Inside System Informática
Msn/E-mail: alanjuliano@yahoo.com.br
Alan Juliano Metzger
Programador Oracle
Inside System Informática
Msn/E-mail: alanjuliano@yahoo.com.br
E aí cara beleza? pois é não tenho nenhum 9.2.0.1 mas testei com o 9.2.0.7 e funcionou 100% com uma figura de 500Kb, e abriu certinho, sem nenhum problema.
Isso pode ser um BUG do 9.2.0.1.
Usei o seguinte comando para adicionar a figura:
e depois usei a procedure acima para retirar e colocar no disco.
Att.:
Alan Juliano Metzger
DBA / Suporte Oracle
Msn: alanjuliano@yahoo.com.br
Isso pode ser um BUG do 9.2.0.1.
Usei o seguinte comando para adicionar a figura:
declare
l_blob blob;
l_bfile bfile;
begin
insert into LOB_ALAN values ( empty_blob() ) returning CD_LOB into l_blob;
l_bfile := bfilename( 'DIR_ARQ', 'Slack.jpg' );
dbms_lob.fileopen( l_bfile );
dbms_lob.loadfromfile( l_blob, l_bfile, dbms_lob.getlength( l_bfile ) );
dbms_lob.fileclose( l_bfile );
end;
Att.:
Alan Juliano Metzger
DBA / Suporte Oracle
Msn: alanjuliano@yahoo.com.br
- alef
- Rank: Analista Pleno
- Mensagens: 119
- Registrado em: Ter, 06 Nov 2007 2:45 pm
- Localização: Patos de Minas - MG
Alexandre Matos
Patos de Minas - MG
Do interior de Minas para o resto do Mundo
Patos de Minas - MG
Do interior de Minas para o resto do Mundo
você acabou de esclarecer as minhas duvidas, é justamente um bug da versão, como eu havia suspeitado.
muito obrigado ^^
muito obrigado ^^
- alef
- Rank: Analista Pleno
- Mensagens: 119
- Registrado em: Ter, 06 Nov 2007 2:45 pm
- Localização: Patos de Minas - MG
Alexandre Matos
Patos de Minas - MG
Do interior de Minas para o resto do Mundo
Patos de Minas - MG
Do interior de Minas para o resto do Mundo
eu podia jurar que era bug da versão, mas o erro ainda continua vou colocar as imagens aqui antes e depois pra você ver o que acontece
Antes
depois
se eu usar o PLSQL Developer pra extrair a imagem de dentro do banco, ela fica perfeita, mas usando os codigos que você me passou, e sai do jeito que coloquei acima.
Alem de demorar muito pra executar a procedure e aumentar o tamanho do arquivo.
se você puder me ajudar. fico agradecido.
Antes
depois
se eu usar o PLSQL Developer pra extrair a imagem de dentro do banco, ela fica perfeita, mas usando os codigos que você me passou, e sai do jeito que coloquei acima.
Alem de demorar muito pra executar a procedure e aumentar o tamanho do arquivo.
se você puder me ajudar. fico agradecido.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Bing [Bot] e 1 visitante