[resolvido] Número de argumentos inválido

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)

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:

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

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);

Muito obrigado Rafael, deu certinho aqui.

Abraços.

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.

Prontinho Rafael! Obrigado pelas dicas.

Obrigado pelas dicas! :wink:

1 curtida