Como fazer download de arquivos armazenados no banco de dados utilizando o Oracle Forms 10g

O arquivo está armazenado em um campo BLOB no banco de dados.


PROCEDURE DOWNLOAD_ARQUIVO IS

lstr_nomeArquivo VARCHAR2(4000);

BEGIN

IF :ARQUIVO.ID IS NULL THEN
alerta('Selecione o arquivo!');
RETURN ;
END IF;

-- ----------------------------------------------------------------------------------------------------
-- Abre a caixa de dialogo para o usuário escolher o nome e local onde o arquivo será armazenado
-- ----------------------------------------------------------------------------------------------------

lstr_nomeArquivo := client_get_file_name(directory_name => 'C:',
file_name => :ARQUIVO.NOME_ARQUIVO,
file_filter => 'ALL Files (*.*)|*.*|',
message => 'Escolha o arquivo',
dialog_type => SAVE_FILE,
select_file => NULL
);


-- ----------------------------------------------------------------------------------------------------
-- Sai caso o usuário não tenha selecionado local e nome do arquivo.
-- ----------------------------------------------------------------------------------------------------

IF lstr_nomeArquivo IS NULL THEN
RETURN ;
END IF;

-- ----------------------------------------------------------------------------------------------------
-- Coleta o arquivo do banco de dados e transfere para a máquina do usuário.
-- ----------------------------------------------------------------------------------------------------

IF NOT webutil_file_transfer.DB_To_Client(clientFile => lstr_nomeArquivo,
tableName => 'ARQUIVO',
columnName => 'ARQUIVO',
whereClause => 'ID = ' || TO_CHAR(:ARQUIVO.ID)
) THEN

alerta('Ocorreu um erro durante o download!');
RETURN ;

END IF;

alerta('O download foi efetuado com sucesso!');

EXCEPTION
WHEN OTHERS THEN
alerta('Ocorreu um erro durante o processo: ' || sqlerrm);

END;

Natural de Salvador-BA, é graduado em Analise de Sistemas pela Universidade Católica do Salvador (UCSal, 2003), e Especialista em Engenharia de Software pela Universidade Salvador (2010).

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *