[resolvido] Número de argumentos inválido

7 respostas Resolvido
programação
R

Fala galera, sou novo na programação e estou tentando executar o comando abaixo, ma ele me retorna o seguinte erro:

ORA-00909: número de argumentos inválido.

gostaria de saber onde estou errando.

obrigado.

SELECT

PRO2.CODPROD,

PRO2.DESCRPROD,

pRO2.COMPLDESC,

PRO2.MARCA,

PAT.DESCRICAO,

CADEMP.RAZAOSOCIAL ,

CADEMP. INSCESTAD,

CADEMP.CGC,

PORT.AGRUPAMENTO,

(RTRIM(PRO2.DESCRPROD)|| '||RTRIM(PRO2.COMPLDESC))  AS DESCRPROD,

SUBSTR(PORT.DESCRICAO,1,2) AS PORTARIA ,  PRO2.CODVOL,

SUM(NVL()SANKHYA.AD_GET_EST_DATA (PRO2.CODPROD,‘01/01/2019’,EST2.CODLOCAL,EST2.CONTROLE,EST2.CODEMP,‘P’,0),0)

AS SALDO

FROM TGFPRO PRO2

INNER JOIN TGFEST EST2 ON PRO2.CODPROD=EST2.CODPROD

LEFT JOIN TGFEMP EMP ON EMP.CODEMP=EST2.CODEMP

LEFT JOIN TSIEMP CADEMP ON CADEMP.CODEMP=EMP.CODEMP

LEFT JOIN TGFPAT PAT ON PRO2.CODPAT=PAT.CODPAT

LEFT JOIN AD_TGFPORT PORT ON PORT.CODPORT=PRO2.AD_CODPORT

WHERE PRO2.ATIVO=‘S’ AND PRO2.CONTROLADO=‘S’ AND

PRO2.AD_CODPORT in (CASE WHEN ‘true’=‘true’ then 2 else 0 end,

CASE WHEN ‘true’=‘true’ then 3 else 0 end,

CASE WHEN ‘true’=‘true’ then 4 else 0 end,

CASE WHEN ‘true’=‘true’ then 5 else 0 end,

CASE WHEN ‘true’=‘true’ then 6 else 0 end,

CASE WHEN ‘true’=‘true’ then 7 else 0 end,

CASE WHEN ‘true’=‘true’ then 8 else 0 end,

CASE WHEN ‘true’=‘true’ then 9 else 0 end,

CASE WHEN ‘true’=‘true’ then 10 else 0 end,

CASE WHEN ‘true’=‘true’ then 11 else 0 end,

CASE WHEN ‘true’=‘true’ then 12 else 0 end

)   AND EST2.CODEMP=‘1’

AND

(( ‘true’=‘true’   AND  (NVL(SANKHYA.AD_GET_EST_DATA (PRO2.CODPROD,‘01/01/2019’,EST2.CODLOCAL,EST2.CONTROLE,EST2.CODEMP,‘P’,0),0))>0 ) OR ‘true’<>‘true’)

GROUP BY PRO2.CODPROD,  PRO2.DESCRPROD,PRO2.COMPLDESC,

PRO2.MARCA,

PAT.DESCRICAO,  CADEMP.RAZAOSOCIAL , PORT.AGRUPAMENTO,

SUBSTR(PORT.DESCRICAO,1,2),  PRO2.CODVOL

,  CADEMP.CGC ,

CADEMP. INSCESTAD

ORDER BY  SUBSTR(PORT.DESCRICAO,1,2)

7 Respostas

S

Acontece @Rafael_mairinck kkk
Sempre verifique se seus tópicos estão na categoria correta, e de preferencia use as tags também para facilitar que os usuários já saibam do q se trata antes mesmo de entrar no tópico, agilizando assim o tempo gasto (“se é sobre algo que eu não sei, nem vou entrar”).
Para te ajudar também, dê uma lida nesse tópico, caso já não tenha feito isso:

R

desculpa, tinha colocado a categoria java sem querer, rsrs.

R
Solucao aceita

Boa tarde,

Este erro indicar que uma função que você criou ou chamou do oracle. Não tem os parâmetros necessários para funcionar. Aparentemente, seu problema está na linha abaixo

SUM(NVL()SANKHYA.AD_GET_EST_DATA (PRO2.CODPROD,‘01/01/2019’,EST2.CODLOCAL,EST2.CONTROLE,EST2.CODEMP,‘P’,0),0)

Note que o NVL() não recebe nada como parâmetro. Se você vai avaliar o retorno dessa função ad_get_est_data todo como null e substituir por 0 caso não encontre tem que fazer de forma parecida com o que está na cláusula and do seu select:

(NVL(SANKHYA.AD_GET_EST_DATA (PRO2.CODPROD,‘01/01/2019’,EST2.CODLOCAL,EST2.CONTROLE,EST2.CODEMP,‘P’,0),0))>0 )

ficaria assim:

SELECT
PRO2.CODPROD,
PRO2.DESCRPROD,
pRO2.COMPLDESC,
PRO2.MARCA,
PAT.DESCRICAO,
CADEMP.RAZAOSOCIAL ,
CADEMP. INSCESTAD,
CADEMP.CGC,
PORT.AGRUPAMENTO,
(RTRIM(PRO2.DESCRPROD)|| '||RTRIM(PRO2.COMPLDESC)) AS DESCRPROD,
SUBSTR(PORT.DESCRICAO,1,2) AS PORTARIA , PRO2.CODVOL,
SUM(NVL(SANKHYA.AD_GET_EST_DATA (PRO2.CODPROD,‘01/01/2019’,EST2.CODLOCAL,EST2.CONTROLE,EST2.CODEMP,‘P’,0),0))
AS SALDO
FROM TGFPRO PRO2
INNER JOIN TGFEST EST2 ON PRO2.CODPROD=EST2.CODPROD
LEFT JOIN TGFEMP EMP ON EMP.CODEMP=EST2.CODEMP
LEFT JOIN TSIEMP CADEMP ON CADEMP.CODEMP=EMP.CODEMP
LEFT JOIN TGFPAT PAT ON PRO2.CODPAT=PAT.CODPAT
LEFT JOIN AD_TGFPORT PORT ON PORT.CODPORT=PRO2.AD_CODPORT
WHERE PRO2.ATIVO=‘S’ AND PRO2.CONTROLADO=‘S’ AND
PRO2.AD_CODPORT in (CASE WHEN ‘true’=‘true’ then 2 else 0 end,
CASE WHEN ‘true’=‘true’ then 3 else 0 end,
CASE WHEN ‘true’=‘true’ then 4 else 0 end,
CASE WHEN ‘true’=‘true’ then 5 else 0 end,
CASE WHEN ‘true’=‘true’ then 6 else 0 end,
CASE WHEN ‘true’=‘true’ then 7 else 0 end,
CASE WHEN ‘true’=‘true’ then 8 else 0 end,
CASE WHEN ‘true’=‘true’ then 9 else 0 end,
CASE WHEN ‘true’=‘true’ then 10 else 0 end,
CASE WHEN ‘true’=‘true’ then 11 else 0 end,
CASE WHEN ‘true’=‘true’ then 12 else 0 end
) AND EST2.CODEMP=‘1’
AND
(( ‘true’=‘true’ AND (NVL(SANKHYA.AD_GET_EST_DATA (PRO2.CODPROD,‘01/01/2019’,EST2.CODLOCAL,EST2.CONTROLE,EST2.CODEMP,‘P’,0),0))>0 ) OR ‘true’<>‘true’)
GROUP BY PRO2.CODPROD, PRO2.DESCRPROD,PRO2.COMPLDESC,
PRO2.MARCA,
PAT.DESCRICAO, CADEMP.RAZAOSOCIAL , PORT.AGRUPAMENTO,
SUBSTR(PORT.DESCRICAO,1,2), PRO2.CODVOL
, CADEMP.CGC ,
CADEMP. INSCESTAD
ORDER BY SUBSTR(PORT.DESCRICAO,1,2);
R

Muito obrigado Rafael, deu certinho aqui.

Abraços.

R

Boa tarde!

Que bom que resolveu. Se possível, edite o tópico, coloque a tag [resolvido]. Além disso, escolha a resposta que contém a solução como solução para facilitar a vida de quem tiver o mesmo problema.

R

Prontinho Rafael! Obrigado pelas dicas.

R

Obrigado pelas dicas! :wink:

Criado 16 de julho de 2019
Ultima resposta 17 de jul. de 2019
Respostas 7
Participantes 3