Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
-
MARISTELAFALCO
- Rank: Programador Júnior
- Mensagens: 25
- Registrado em: Seg, 17 Mar 2008 2:31 pm
- Localização: MARINGA-PR
ao executar a instruçao abaixo :
Selecionar tudo
dbms_lob.read(va_pdf, va_tamanho_limite, va_posicao_pdf,
va_tamanho);
utl_file.put_raw(va_end, va_tamanho, TRUE);
utl_file.fflush(va_end);
da erro:
Selecionar tudo
ORU-10028: line length overflow, limit of 32767 bytes per line
va_pdf blob; (arquivo pdf)
va_tamanho RAW(32767);
va_tamanho_pdf INTEGER;
va_tamanho_limite BINARY_INTEGER := 32767;
va_posicao_pdf INTEGER:=1;
tipos raw e
BINARY_INTEGER
são limitados a 32767,
enquanto meu va_tamanho fica < 37000 beleza, mas passou da erro.
-
dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
-
Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você não consegue fazer um LOOP e ir pegando de pedaço em pedaço o arquivo ?
-
dudu0566
- Rank: Analista Júnior
- Mensagens: 74
- Registrado em: Seg, 06 Ago 2007 3:59 pm
- Localização: Campinas - SP
dr_gori estou tendo a mesma dificuldade que a nossa amiga MARISTELAFALCO relatou.
como faço para abrir o arquivo de "pedaço" em "pedaço"???
Grato
Eduardo Gomes
-
joaogarcia
- Rank: Analista Júnior
- Mensagens: 91
- Registrado em: Ter, 20 Mar 2007 7:19 pm
- Localização: Campinas - SP
-
Contato:
Cordialmente,
João C. Garcia
Amigo, de uma analisada neste trecho..
Selecionar tudo
BEGIN
/*
vFile utl_file.file_type;
vBuffer RAW(32767);
vAmount BINARY_INTEGER := 32767;
vPosicao INTEGER := 1;
vBlob BLOB;
vTamanho INTEGER;
*/
-- Obtem tamanho do BLOB
vTamanho := dbms_lob.getlength(vBlob);
-- Abre arquivo destino
vFile := utl_file.fopen(vDirBD, vNomeArq, 'W', 32767);
-- Grava o BLOB no arquivo em blocos
WHILE vPosicao < vTamanho LOOP
--
IF vPosicao + vAmount > vTamanho THEN
vAmount := (vTamanho + 1) - vPosicao;
END IF;
--
dbms_lob.read(vBlob, vAmount, vPosicao, vBuffer);
utl_file.put_raw(vFile, vBuffer, TRUE);
vPosicao := vPosicao + vAmount;
--
END LOOP;
--
EXCEPTION
WHEN OTHERS THEN
vRetorno := 'ERRO ao executar comandos dbms_lob: ' || SQLERRM;
RAISE vErro;
END;
-
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante