Fórum O que tem de errado nesta função SQL? #620760
04/12/2023
0
Olá pessoal,
Estou tentando criar a função abaixo para que seja retornado o salário líquido do funcionário:
Só que está retornando o erro:
Msg 455, Nível 16, Estado 2, Procedimento fnSALARIO_LIQUIDO, Linha 11 [Linha de Início do Lote 0]
The last statement included within a function must be a return statement.
Mensagem 4121, Nível 16, Estado 1, Linha 28
Cannot find either column "dbo" or the user-defined function or aggregate "dbo.fnSALARIO_LIQUIDO", or the name is ambiguous.
Como posso corrigir isso?
Grato.
Estou tentando criar a função abaixo para que seja retornado o salário líquido do funcionário:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | CREATE OR ALTER FUNCTION fnSALARIO_LIQUIDO ( @ANOCOMP_N AS INTEGER , @MESCOMP_N AS INTEGER , @NROPERIODO_N AS INTEGER , @CHAPA_S AS VARCHAR (20) ) RETURNS DECIMAL (18,4) AS BEGIN DECLARE @RETORNO AS DECIMAL (18,4) SET @RETORNO = ( SELECT ( ISNULL (( SELECT SUM (X.VALOR) FROM PFFINANC X (NOLOCK) INNER JOIN PEVENTO Y ON (Y.CODIGO = X.CODEVENTO AND Y.CODCOLIGADA = X.CODCOLIGADA) WHERE X.CHAPA = A.CHAPA AND X.ANOCOMP = @ANOCOMP_N AND X.MESCOMP = @MESCOMP_N AND X.NROPERIODO = @NROPERIODO_N AND Y.PROVDESCBASE = '' P '' ), 0) - ISNULL (( SELECT SUM (X.VALOR) FROM PFFINANC X (NOLOCK) INNER JOIN PEVENTO Y ON (Y.CODIGO = X.CODEVENTO AND Y.CODCOLIGADA = X.CODCOLIGADA) WHERE X.CHAPA = A.CHAPA AND X.ANOCOMP = @ANOCOMP_N AND X.MESCOMP = @MESCOMP_N AND X.NROPERIODO = @NROPERIODO_N AND Y.PROVDESCBASE = '' D '' ), 0)) FROM PFUNC A WHERE A.CHAPA = @CHAPA_S) END GO SELECT A.CHAPA, A.NOME, SALARIO_LIQUIDO = dbo.fnSALARIO_LIQUIDO(2023, 11, 1, A.CHAPA) FROM PFUNC A WHERE A.CHAPA = '' 00802 '' |
Só que está retornando o erro:
Msg 455, Nível 16, Estado 2, Procedimento fnSALARIO_LIQUIDO, Linha 11 [Linha de Início do Lote 0]
The last statement included within a function must be a return statement.
Mensagem 4121, Nível 16, Estado 1, Linha 28
Cannot find either column "dbo" or the user-defined function or aggregate "dbo.fnSALARIO_LIQUIDO", or the name is ambiguous.
Como posso corrigir isso?
Grato.

Ilano Caldas
Curtir tópico
+ 0
Responder
Post mais votado
04/12/2023
Como a mensagem de erro informa, claramente, quando definimos uma function, temos que retornar o valor que a function gera.
Imagino que tenha faltado apenas informar isso, acrescentando uma linha antes do END:
Imagino que tenha faltado apenas informar isso, acrescentando uma linha antes do END:
1 2 3 | ... return @retorno END |
Arthur Heinrich

Responder
Gostei + 1
Mais Posts
05/12/2023
Ilano Caldas
Como a mensagem de erro informa, claramente, quando definimos uma function, temos que retornar o valor que a function gera.
Imagino que tenha faltado apenas informar isso, acrescentando uma linha antes do END:
Imagino que tenha faltado apenas informar isso, acrescentando uma linha antes do END:
1 2 3 | ... return @retorno END |
Caramba, que barbeiragem a minha! Era isso mesmo Arthur.
Obrigado!
Responder
Gostei + 0
05/12/2023
Fernando Gaspar
Boooa as vezes os detalhes passam desapercebidos..
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)