Функция создания SQL получила ошибку в возвращаемой части - PullRequest
0 голосов
/ 03 декабря 2018

Может кто-нибудь сообщить мне, где SQL-запрос неверен?

Ошибка

Неверный синтаксис рядом с "return"

Код:

CREATE FUNCTION getNthHighestSalary(@N INT) 
RETURNS INT 
AS
BEGIN
    WITH ranksalary AS
    (
        SELECT
            salary, 
            ROW_NUMBER() OVER (ORDER BY Salary DESC) AS Rank
        FROM
            Employee
    )
    RETURN (SELECT Salary AS getNthHighestSalary 
            FROM ranksalary
            WHERE Rank = @N);
END

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Почему бы просто не использовать эту логику?

declare @rank;

select @rank = count(*) + 1
from employee
where salary > @salary;

return @rank;
0 голосов
/ 03 декабря 2018

Похоже, T-SQL для меня.Как уже указывал @marc_s, вам нужно сначала сохранить значение в переменной, а затем вернуть его.

CREATE FUNCTION getNthHighestSalary(@N INT)
RETURNS INT
AS
BEGIN
    DECLARE @result int
    ;WITH ranksalary AS
    (
        SELECT
            salary, 
            ROW_NUMBER() OVER (ORDER BY Salary DESC) AS [Rank]
        FROM
            Employee
    )
    SELECT @result = Salary
      FROM ranksalary
      WHERE [Rank] = @N

    RETURN @result
END

GO
...