Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

markevis

Preciso dar carga em várias tabelas a partir da execução de uma stored

Recommended Posts

Prezados, Preciso dar carga em quatro tabelas. Para isso existe uma stored procedure que lerá um arquivo de dadose apartir dele carregará as referidas tabelas. A minha dúvida é quais os parametros que devo colocar na procedure para executá-la. Abaixo segue um trecho da procedure. Este arquivo será colocado em um diretorio do servidor de BD (por exemplo, \\servidor\u03\arquivos) e apartir dele chamarei a procedure para dar carga nas tabelas. Assim quando chamar a procedure devo fazê-lo dessa forma:EXEC SPCCE_ARQUIVO_CONTRIBUINTE(<parametros necessários>);Se alguem puder me ajudar ficaria agradecido.CREATE OR REPLACE PROCEDURE "SPCCE_ARQUIVO_CONTRIBUINTE" ( PstrNome_Dir IN VARCHAR2) IS--**********************************************************************---- Descrição: Lê o arquivo com os dados de contribuinte os quais serão-- inseridos nas dimensões GEN_PESSOA_FISICA, GEN_PESSOA_JURIDICA, CCE_CONTRIBUINTE -- -------------------------------------------------------------------------- Layout do arquivo de importação-------------------------------------------------------------------------- NUMR_PESSOA_BASE (N09) 1-- NUMR_CPF (N11) 10-- NOME_PESSOA (A80) 101-- CODG_SEXO (A1) 25-- DATA_NASCIMENTO (N08) 37-- NUMR_INSCRICAO (N09) 39-- NOME_BAIRRO (A60) 89-- NOME_LOGRADOURO (A40) 129-- TIPO_LOGRADOURO (A04) 130-- CODG_MUNICIPIO (N06) 138-- CODG_CEP (N08) 146-- NUMR_ENDERECO (A06) 157-- NUMR_LOTE_ENDERECO (A05) 168-- NUMR_QUADRA_ENDERECO (A10) 176-- DESC_COMPL_ENDERECO (A80) 187--*** Declaração de variáveis LstrNome_Arq varchar(30); LstrNome_Dir varchar(20); LstrReg_Arq varchar(250) default 'x'; LstrOpen_Arq utl_file.file_type; LstrSqlErrm varchar(200); LstrDesc_Reg VARCHAR(400); LintCont_Reg number(11) := 0; LintQtde_update_pesfis number(11) := 0; LintQtde_insert_pesfis number(11) := 0; LintQtde_update_pesjur number(11) := 0; LintQtde_insert_pesjur number(11) := 0; LintQtde_update_contrib number(11) := 0; LintQtde_insert_contrib number(11) := 0; LintQtde_contador_notfound number(11) := 0; LintQtde_pesfis_notfound number(11) := 0; LintQtde_unidOper_notfound number(11) := 0; LregPessoa gen.gen_pessoa%rowtype; LregPesFis gen.gen_pessoa_fisica%rowtype; LregPesJur gen.gen_pessoa_juridica%rowtype; LregContrib cce.cce_contribuinte%rowtype; LregContador cce.cce_contador%rowtype; LregUnidOper gen.gen_unidade_operacional%rowtype;BEGIN dbms_output.enable; --LstrNome_Arq := 'DadosContribuinte.txt'; LstrNome_Dir := 'FLATFILES'; --PstrNome_Dir; LstrOpen_Arq := utl_file.fopen(LstrNome_Dir, PstrNome_Dir, 'r'); Loop Begin Begin utl_file.get_line( LstrOpen_Arq, LstrReg_Arq );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pela SP o parametro seria o nome do diretório onde está o arquivo a ser processado.

 

Não dá para saber o que realmente a SP faz

 

--LstrNome_Arq := 'DadosContribuinte.txt'; --não executa esta linha

LstrNome_Dir := 'FLATFILES'; --PstrNome_Dir; -- crava o nome do arquivo a ser aberto

LstrOpen_Arq := utl_file.fopen(LstrNome_Dir, PstrNome_Dir, 'r'); -- abre o arquivo FLATFILES no dir

-- do parametro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Pelo que ví também, você precisará apenas de 1 parâmetro, que é o NOME DIRETORIO.

 

Acho que o resto, a SP faz sozinho, Então, use:

 

SQL > exec SPCCE_ARQUIVO_CONTRIBUINTE('\FileSystem\Diretorio\');

 

Abraços, http://forum.imasters.com.br/public/style_emoticons/default/shifty.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.