O que tem de errado nesta função SQL?
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:
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:
... return @retorno END
Arthur Heinrich
Responder
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:
... return @retorno END
Caramba, que barbeiragem a minha! Era isso mesmo Arthur.
Obrigado!
Responder
Clique aqui para fazer login e interagir na Comunidade :)