Ir para conteúdo

Arquivado

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

Angelice

[Resolvido] Erro SQL com Oracle

Recommended Posts

Olá, tenho um sistema desenvolvido em Delphi 7.0 utilizando banco de dados oracle nas versões 9i e 10g.

O código abaixo roda sem problemas no banco de dados de produção e na base de testes, sendo o primeiro 10g e o segundo 9i.

Criamos um terceiro banco, na mesma maquina, utilizando a versão 9i e nesse o código não roda de forma alguma, sempre aparece o erro.

Segue abaixo o código e o erro:

 

SELECT

DECODE(Is_Greatest(NUM_UMIDADE_DESCONTO,NUM_UMIDADE_TOLERANCIA), 1, (NUM_UMIDADE_TOLERANCIA), 0) AS Umidade

FROM

TB_PADRAO_DESCONTO_PRODUTO;

DECODE(Is_Greatest(NUM_UMIDADE_DESCONTO,NUM_UMIDADE_TOLERANCIA), 1, (NUM_UMIDADE_TOLERANCIA), 0) AS Umidade

*

ERRO na linha 2:

ORA-00904: nome inválido de coluna

 

O erro ocorre na função Is_greatest, não consegui encontrar nenhuma referencia sobre essa função e o programador que desenvolveu esse codigo não se encontra mais na empresa.

 

Por favor, se alguém puder me ajudar agradeço muito, não sei mais oq fazer.

 

Muito Obrigada

Angelice

Compartilhar este post


Link para o post
Compartilhar em outros sites

Angelice, seu problema não é no código do delphi e sim problema nas suas rotinas de pesquisa no oracle. Então, moverei o tópico para a área apropriada.

 

Movido Delphi -> Gerenciamento de Banco de Dados -> Oracle

Compartilhar este post


Link para o post
Compartilhar em outros sites

Angelice, seu problema não é no código do delphi e sim problema nas suas rotinas de pesquisa no oracle. Então, moverei o tópico para a área apropriada.

 

Movido Delphi -> Gerenciamento de Banco de Dados -> Oracle

 

Ok, muito obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Angelice, dei uma pesquisada rápida sobre a função Is_Greatest na web... e não encontrei nada sobre ela. O mais próximo que encontrei foi a função Greatest, neste link... você tem certeza que esta função Is_greatest existe no oracle? Você verificou se nas outras bases onde chama esta função se ela não foi uma rotina criada direto na base (uma procedure/function)?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nas versões antigas o SQL não tinha CASE assim alguns tratamentos mais complexos deviam ser feitos com uso de funções de usuários.

 

No Sistema antigo deve ter uma FUNCTION com este nome

Is_Greatest , esta deve ter sido criada por algum programador para resolver um tratamento de maior e menor.

 

O mais simples para manter o legado é criar a função na nova tabela.

 

senão achar a solução seria reescrever a function (deve comparar duas variaveis e devolver 0 ou 1 conforme a condição e´maior ou não, mais presisa saber como a function espera e deveve os parametros) ou mudar as sql para tratrar via case (mais demorado).

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.