Marcondes 0 Denunciar post Postado Novembro 20, 2008 Olá Pessoal, Estou com ao utilizar uma função que verifica um XML e o carrega na base, está dando este erro, creio que tem algo a ver com sintaxe na função, pois antes não dava este erro, agora está em oracle 9.2, por favor me ajudem. ERRO: --2147217904-ORA-06550: line 1, column 32: PLS-00905: object BRMI54P.VERIFICA_TP_UPLOAD is invalid ORA-06550: line 1, column 25: PL/SQL: Statement ignor FUNCTION: create or replace function VERIFICA_TP_UPLOAD (p_id_usuario in number, p_id_sessao_oracle in varchar) return long as begin --declara variaveis declare nInicioInsert number(6); --Variavel que ira receber o id da linha inicial nFimInsert number(6); --variavel que ira recebe o id da linha final vretorno varchar2(100); --recebe mensagens de erro caso exista vTipoProg varchar2(10); --recebe o tipo cadastrado vTipoCanal varchar2(10); --recebe o canal vTipoCanalAnt varchar2(10); --recebe o canal vTipoProgAnt varchar2(10); --recebe o tipo cadastrado nInicioString number(2); nFimString number(2); vretornoFuncao long; begin --seta variaveis nInicioInsert := 0; --busca a linha inicial da insergco select min(nvl(id_linha,0)) into nInicioInsert from carga_xml where id_usuario = p_id_usuario and id_sessao_oracle = p_id_sessao_oracle; begin --seta variaveis nFimInsert := 0; --busca a linha final da insergco select max(nvl(id_linha,0)) into nFimInsert from carga_xml where id_usuario = p_id_usuario and id_sessao_oracle = p_id_sessao_oracle; begin --seta variavel de controle vretorno := '0'; nInicioString := '0'; nFimString := '0'; -- verifica se as linhas de retorno estco diferentes de "0" if nInicioInsert <> 0 and nFimInsert <> 0 then --verifica se a linha final i maior que a inicial if nFimInsert > nInicioInsert then begin -- seta variavel que ira recebe o tipo vTipoProg := '0'; vTipoProgAnt := '0'; --ira verificar quanis os tipos existentes for regbuscathplan in (select rtrim(ltrim(texto_linha)) texto_linha from carga_xml where id_usuario = p_id_usuario and id_sessao_oracle = p_id_sessao_oracle and id_linha between nInicioInsert and nFimInsert and texto_linha like '%<tipo>%' order by id_linha ) loop if substr(regbuscathplan.texto_linha,1,6) <> '<tipo>' then --variavel recebe o erro vretorno := 'Tipo do arquivo incorreto'; begin -- se retorno algun erro ira gravar o mesmo insert into retorno_carga ( id_sessao_oracle, texto ) values ( p_id_sessao_oracle, vretorno); commit; end; exit; end if; nInicioString := (instr(regbuscathplan.texto_linha,'>',1) + 1); nFimString := (instr(regbuscathplan.texto_linha,'<',2) - 1); vTipoProg := substr(regbuscathplan.texto_linha,nInicioString,(nFimString-nInicioString+1)); if vTipoProgAnt = '0' then vTipoProgAnt := vTipoProg; else if vTipoProgAnt <> vTipoProg then --variavel recebe o erro vretorno := 'Existe mais de um tipo no arquivo'; begin -- se retorno algun erro ira gravar o mesmo insert into retorno_carga ( id_sessao_oracle, texto ) values ( p_id_sessao_oracle, vretorno); commit; end; exit; else vTipoProgAnt := vTipoProg; end if; end if; end loop; end; /* VERIFICA SE REVISTA */ begin -- seta variavel que ira receber o canal vTipoCanal := '0'; vTipoCanalAnt := '0'; --ira verificar quais os canais existentes for regbuscathplan in (select rtrim(ltrim(texto_linha)) texto_linha from carga_xml where id_usuario = p_id_usuario and id_sessao_oracle = p_id_sessao_oracle and id_linha between nInicioInsert and nFimInsert and texto_linha like '%<canal>%' order by id_linha ) loop if substr(regbuscathplan.texto_linha,1,7) <> '<canal>' then --variavel recebe o erro vretorno := 'Canal do arquivo incorreto'; begin -- se retorno algun erro ira gravar o mesmo insert into retorno_carga ( id_sessao_oracle, texto ) values ( p_id_sessao_oracle, vretorno); commit; end; exit; end if; nInicioString := (instr(regbuscathplan.texto_linha,'>',1) + 1); nFimString := (instr(regbuscathplan.texto_linha,'<',2) - 1); vTipoCanal := substr(regbuscathplan.texto_linha,nInicioString,(nFimString-nInicioString+1)); if vTipoCanalAnt = '0' then vTipoCanalAnt := vTipoCanal; else if vTipoCanalAnt <> vTipoCanal then --variavel recebe o erro vretorno := 'Existe mais de um canal no arquivo'; begin -- se retorno algun erro ira gravar o mesmo insert into retorno_carga ( id_sessao_oracle, texto ) values ( p_id_sessao_oracle, vretorno); commit; end; exit; else vTipoCanalAnt := vTipoCanal; end if; end if; end loop; end; /* FIM DE VERIFICACAO */ begin -- ira chamar fungues relacionadas aos tipos pesquisados -- no arquivo if vTipoProg = '20' or vTipoProg is null then begin vretornoFuncao := CARGA_VALIDA_XML(p_id_usuario,P_ID_SESSAO_ORACLE); /*Toda function deve retornar algum valor */ if vretornoFuncao = 'Processamento finalizado com sucesso.' then return 'CARGA_VALIDA_XML CONCLUIDO COM SUCESSO'; else return 'CARGA_VALIDA_XML CONCLUIDO COM RESTRIGOES'; end if; end; elsif (vTipoProg = '18') or (vTipoProg = '19') or (vTipoProg = '21') or (vTipoProg = '33') then vretornoFuncao := UPLOAD_TV_OM(p_id_usuario,P_ID_SESSAO_ORACLE); /*Toda function deve retornar algum valor */ if vretornoFuncao = 'Processamento finalizado com sucesso.' then return 'UPLOAD_TV_OM CONCLUIDO COM SUCESSO'; else return 'UPLOAD_TV_OM CONCLUIDO COM RESTRIGOES'; end if; else if vTipoCanal = 'RV' Then vretornoFuncao := UPLOAD_OM_REVISTA(p_id_usuario,P_ID_SESSAO_ORACLE); else vretornoFuncao := UPLOAD_OM(p_id_usuario,P_ID_SESSAO_ORACLE); end if; /*Toda function deve retornar algum valor */ if vretornoFuncao = 'Processamento finalizado com sucesso.' then return 'UPLOAD OM CONCLUIDO COM SUCESSO'; else return 'UPLOAD OM CONCLUIDO COM RESTRIGOES'; end if; end if; end; end if; end if; end; exception when NO_DATA_FOUND then --seta variaveis --nFimInsert := 0; --variavel recebe mensagem vretorno := 'Nco existe dados neste arquivo.Verifique<br>'; begin -- se retorno algun erro ira gravar o mesmo insert into retorno_carga ( id_sessao_oracle, texto ) values ( p_id_sessao_oracle, vretorno); commit; end; end; exception when NO_DATA_FOUND then --seta variaveis --nInicioInsert := 0; --nFimInsert := 0; --variavel recebe mensagem vretorno := 'Nco existe dados neste arquivo.Verifique'; begin -- se retorno algun erro ira gravar o mesmo insert into retorno_carga ( id_sessao_oracle, texto ) values ( p_id_sessao_oracle, vretorno); commit; end; -- return 'conclumdo'; end; return 'conclumdo'; end VERIFICA_TP_UPLOAD; Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Novembro 20, 2008 object BRMI54P.VERIFICA_TP_UPLOAD is invalid ORA-06550: Este objeto deve estar com algum erro de sintaxe , veja em qualquer programa gerenciador de objetos Oracle. Compartilhar este post Link para o post Compartilhar em outros sites
Marcondes 0 Denunciar post Postado Novembro 20, 2008 object BRMI54P.VERIFICA_TP_UPLOAD is invalid ORA-06550: Este objeto deve estar com algum erro de sintaxe , veja em qualquer programa gerenciador de objetos Oracle. Como assim? não entendi... também, não sou um gênio em oracle...rsrsrsrs....você pode ser um pouco mais especifico? Muito obrigado por enquanto. Abraços, Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Novembro 21, 2008 O erro relata que o objeto está inválido, provalvemente a procedure está com algum de síntaxe que não permite a compilação. Compartilhar este post Link para o post Compartilhar em outros sites