Estou com um problema, porém não estou conseguindo resolver... Gostaria de saber se alguém conseguiria me dar uma ajuda!
Eu tenho um forms onde mostra os itens(produto) que determinado cliente possui. Estou inserindo um campo do tipo imagem no forms para que a cada item que seja mudado possa ser carregada a imagem do item, mas a imagem do item não temos no servidor e nem teremos, tenho que buscar a imagem no site do cliente ou em algum endereço via web.
Estou utilizando o UTL_HTTP.request para buscar o conteúdo da página, onde no código eu jogo o conteúdo para uma variável do tipo blob, não estou conseguindo nem inserir na tabela temporária a imagem, já que dá um erro "numeric or value error conversion error".
No momento para efetuar o teste criei um botão onde chamo passando um link de qualquer imagem apenas para teste mesmo, e assim que pressiono o botão chama a proc e dou um go_block para o bloco database da tabela temporária onde teóricamente deveria inserir a imagem, e por consequência um execute_query. Mas nem sequer chego a essa parte.
Segue o meu código e o código que uso para efetuar o teste. Se alguém já fez algo parecido e puder dar uma força agradeço! ...
Código da procedure
procedure chama_url_clob( p_url varchar2 ) is
--
blobvar blob := empty_blob;
len number;
buffer varchar2(32767);
l_http_request utl_http.req;
l_http_response utl_http.resp;
resp utl_http.resp;
value varchar2(1024);
--
begin
--
dbms_lob.createtemporary(blobvar, TRUE);
dbms_lob.open(blobvar, dbms_lob.lob_readwrite);
--
--Prepara a abertura da página
--Define um timeout de resposta de 3 minutos
begin
utl_http.set_transfer_timeout(180);
l_http_request := utl_http.begin_request(p_url);
utl_http.set_header(l_http_request, 'User-Agent', 'Mozilla/4.0');
--
--Loop para buscar o conteúdo da página
resp := utl_http.get_response(l_http_request);
--
loop
--
utl_http.read_line(resp, value, true);
--Escreve o clob de resposta
len := length(value);
--
if len > 0 then
dbms_lob.writeappend(blobvar, len, value);
end if;
--
end loop;
--
utl_http.end_response(resp);
--
exception
when utl_http.end_of_body then
utl_http.end_response(resp);
end;
--
-- fecha o clob
dbms_lob.close(blobvar);
--
--insere na tabela temporária imagem_url
insert into imagem_url ( imur_id_imagem, imur_blob_imagem )
values ( '+intIdImagem+' , blobvar);
--
exception
when others then
raise_application_error( -20000, pilha.propaga( sqlcode, sqlerrm||' Erro detalhado: '||utl_http.get_detailed_sqlerrm, 'chama_url_clob') , true);
end chama_url_clob;
--
--
end pc_load_image;
Código que uso dentro do forms
begin
pc_load_image.chama_url_clob('http://hsfeatures.com/features04/images/bmp3aj_12.jpg');
go_block('imagem_url');
execute_query;
commit;
end;
Se alguém puder me ajudar! Vlw!!