Ir para conteúdo

POWERED BY:

Arquivado

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

Marcondes

ERRO EM Function

Recommended Posts

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

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

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

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

×

Informação importante

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