Ir para conteúdo

Arquivado

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

_Patrícia_

[Resolvido] Problema ao executar função

Recommended Posts

Eu insisto ...

 

Não, o erro listado originalmente

ORA-00306:número incorreto de tipos de argumentos para chamada

é claro, ou se está passado campos a mais ou a menos para uma rotina ou um ou mais dos parametros tem tipos diferentes do esperado pela rotina ou ainda o tamanho passado é maior.

 

O problema é só saber aonde.

 

A ideia da fase é separar o local do possível problema.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que tem na linha 58 a arredores ?

 

A linha 193 pode ser de uma rotina chamada.

 

Tá braba esta realmente ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como em geral eu resolvo estas encrencas.

 

Não costumo usar o degub, mas sabendo usar bem é uma solução.

 

Coloco dbms_output.put_line´s a torto é direito, elas dão pista de por onde a bagaça passou.

 

Como tem muitas chamadas o erro pode estar numa rotina chamada.

 

Mas o código do erro é a pista , tipagem ou tamanho na passagem dos parametros, o resto é paciência.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Estou com o mesmoo problema em mais de uma função,

veja o que acontece agora,

 

tenho o seguinte codigo, com apenas 2 variaveis,

e quando executo ele traz todas as variaveis, mesmo aquela que foram apagadas já,

 

e o erro permanece:

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como está a chamada desta FUNCTION ?

 

Uma coisa que acho errada (eu não faço ao menos) e FUNCTION com campos de OUTPUT , isto pode ser o problema.

 

FUNCTION para serem usadas como CAMPOS devem ser IN e não atualizar (insert/update).

 

Fora isto use procedures e faça a chamada sem select

BEGIN
...
  MINHA_PROCEDURE2(.....);
END;

 

Com Procedure use input e/ou output a vontade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O mais estranho é que em outras funções que criei dessa mesma forma,

não tive problema algum...

mas vou tentar recria-lá como procedure, quem sabe

o problema esteja ai mesmo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lembre-se que procedure não pode ser chamada via SQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta chamar :

 

create or replace procedure soma (par1 in number,par2 in number) is
 vn_result number;
begin
  faz_soma(par1,par2,vn_result);
  dbms_putput.put_line(vn_result);
end;
/

create or replace procedure faz_soma(par1 in number,par2 in number,par3 out number) is
 vn_result number;
begin
  par3 := par1 + par2;
end;
/

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema é ao executar a função certo?

Comente todo o código dela e inclua um 'null;' apenas para compilar a função.

Veja o que acontece, tá parecendo que o erro é em outro ponto.

Se quiser enviar os objetos e criação das tabelas, eu subo esta função em uma base local minha para tentar achar o problema.

Qualquer coisa meu e-mail é carloseribeiro@yahoo.com.br

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, executando esta própria função!

 

Assim, no banco, tenho outras funções, dentro de algumas são chamadas outras funções também!

 

será que o problema pode estar ai ?!

 

quem sabe na chamade de alguma função ?

 

mas como saber o que é e em qual lugar esta o problema!

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu acho que o problema é em outro ponto.

O erro ocorre quando você executa uma função específica certo? Qual é esta função, é a GER_AUDIOMETRIA? Parece que não, pois você colocou apenas 'null;' e o erro permanece.

você tem o PL Sql Developer instalado?

Se tiver, sabe fazer debug nele? pq aí você faria um debug nessa função que você executa e ocorre o erro, pra tentar identificar onde dá o erro.

 

Se quiser mandar as respostas direto no meu e-mail, depois que a gente conseguir resolver a gente posta aqui para o pessoal ficar sabendo do desfecho.

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.