[firebase-br] Importar text para a tabela
Igor Alves
igor.alvez em gmail.com
Qua Out 13 09:36:49 -03 2010
Eu fiz uma procedure para importar de um arquivo txt os dados a serem
inseridos numa tabela, gostaria que me desse uma ajuda, pois não esta
funcionando.Abaixo está o corpo da procedure
--Variaveis de Leitura
W_REGISTRO VARCHAR;
W_ARQUIVO UTL_FILE.FILE_TYPE;
W_ERR_MSG VARCHAR;
--Variaveis de Dados do Arquivo
W_NOME VARCHAR;
W_PARCELA SMALLINT;
W_INICIO_CONTRATO DATE;
W_FIM_CONTRATO DATE;
W_VALOR_LIBERADO INTEGER;
W_VALOR_OPERACAO INTEGER;
W_VALOR_PARCELA INTEGER;
W_SALDO_DEVEDOR SMALLINT;
--Variaveis para criação de log, caso o emrpestimo ja exista na base.
W_NOME_LOG VARCHAR;
W_PARCELA_LOG SMALLINT;
W_INICIO_CONTRATO_LOG DATE;
W_FIM_CONTRATO_LOG DATE;
W_VALOR_LIBERADO_LOG INTEGER;
W_VALOR_OPERACAO_LOG INTEGER;
W_VALOR_PARCELA_LOG INTEGER;
W_SALDO_DEVEDOR_LOG SMALLINT;
--Variaveis de uso global
W_VARIAVEL INTEGER;
W_COUNT INTEGER;
W_LINHA INTEGER;
W_CODIGO INTEGER;
--Pega o codigo do funcionario
CURSOR COD_FUNC IS
SELECT PES_I_COD
FROM FPGPESSOA
WHERE PES_A_NOM = W_NOME;
BEGIN
IF P_NOM_ARQUIVO IS NULL THEN
RAISE_APPLICATION_ERROR(-20002,' Informe o nome do arquivo a ser
importado.');
END IF;
-- Abre arquivo (Parametros: Nome do diretorio,Variavel do nome do
arquivo, e tipo)
W_ARQUIVO := UTL_FILE.FOPEN ( 'INVENTARIO_DIR', P_NOM_ARQUIVO, 'r');
W_LINHA :=1;
LOOP
-- Lê dados do arquivo
BEGIN
UTL_FILE.GET_LINE ( W_ARQUIVO,W_REGISTRO);
EXCEPTION
WHEN NO_DATA_FOUND THEN
EXIT;
END;
--Obtem do arquivo o nome do funcionário
W_VARIAVEL := instr(W_REGISTRO,';');
W_NOME := substr(W_REGISTRO,1,W_VARIAVEL-1);
W_REGISTRO := substr(W_REGISTRO,W_VARIAVEL+1);
--Obtem do arquivo o numero da parcela
W_VARIAVEL := instr(W_REGISTRO,';');
W_PARCELA := substr(W_REGISTRO,1,W_VARIAVEL-1);
W_REGISTRO := substr(W_REGISTRO,W_VARIAVEL+1);
--Obtem do arquivo a data inicio do contrato
W_VARIAVEL := instr(W_REGISTRO,';');
W_INICIO_CONTRATO := substr(W_REGISTRO,1,W_VARIAVEL-1);
W_REGISTRO := substr(W_REGISTRO,W_VARIAVEL+1);
--Obtem do arquivo a data fim do contrato
W_VARIAVEL := instr(W_REGISTRO,';');
W_FIM_CONTRATO := substr(W_REGISTRO,1,W_VARIAVEL-1);
W_REGISTRO := substr(W_REGISTRO,W_VARIAVEL+1);
--Obtem do arquivo o valor liberado
W_VARIAVEL := instr(W_REGISTRO,';');
W_VALOR_LIBERADO := substr(W_REGISTRO,1,W_VARIAVEL-1);
W_REGISTRO := substr(W_REGISTRO,W_VARIAVEL+1);
--Obtem do arquivo o valor da operação
W_VARIAVEL := instr(W_REGISTRO,';');
W_VALOR_OPERACAO := substr(W_REGISTRO,1,W_VARIAVEL-1);
W_REGISTRO := substr(W_REGISTRO,W_VARIAVEL+1);
--Obtem do arquivo o valor da parcela
W_VARIAVEL := instr(W_REGISTRO,';');
W_VALOR_PARCELA := substr(W_REGISTRO,1,W_VARIAVEL-1);
W_REGISTRO := substr(W_REGISTRO,W_VARIAVEL+1);
--Obtem do arquivo o saldo devedor do funcionário
W_VARIAVEL := instr(W_REGISTRO,';');
W_SALDO_DEVEDOR := substr(W_REGISTRO,1,W_VARIAVEL-1);
OPEN COD_FUNC;
FETCH COD_FUNC INTO W_CODIGO;
IF COD_FUNC%FOUND THEN
INSERT INTO EMPRESTIMO_CONSIGNADO
VALUES(W_CODIGO,W_NOME,W_PARCELA,W_INICIO_CONTRATO,W_FIM_CONTRATO,W_VALOR_LIBERADO,W_VALOR_OPERACAO,W_VALOR_PARCELA,W_SALDO_DEVEDOR,current_timestamp,W_LINHA);
END IF;
CLOSE COD_FUNC;
COMMIT;
W_LINHA:= W_LINHA+1;
END LOOP;
Igor Alves
Analista do Sistema RH - MB Solutions
Pós-Graduando em Banco de Dados com Ênfase em Alta Disponibilidade - UNIFACS
Tel: (71)8812-8670
Mais detalhes sobre a lista de discussão lista