sql проблема с декларацией функции

не знаю почему подчеркивает первую линию красным. В чём может быть проблема. Помогите пожалуйста

BEGIN

CREATE FUNCTION funkcja(@p1 int = 18, @p2 int = 30)
        RETURNS TABLE 
        AS
        RETURN (SELECT * FROM Employees 
                WHERE DATEDIFF(year, BirthDate, getdate()) between @p1 and @p2)
       GO


SELECT EmployeeID, LastName, FirstName, ROW_NUMBER(order by employyID desc) as number 
    FROM funkcja(default) 
    WHERE number  % 3 = 0
    order by desc

END;
GO

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Ilshat Nasyrov

Вам необходимо убрать ключевое слово BEGIN перед началом создания функции, т.к. это вызывает синтаксическую ошибку: "CREATE FUNCTION" должна быть единственной в пакете

Для вызова каждого параметра по умолчанию, необходимо передать ключевое слово DEFAULT в верхнем регистре

Код должен выглядеть следующим образом

CREATE FUNCTION funkcja(@p1 int = 18, @p2 int = 30)
    RETURNS TABLE 
    AS
    RETURN (SELECT * FROM Employees 
            WHERE DATEDIFF(year, BirthDate, getdate()) between @p1 and @p2)
GO

BEGIN

    SELECT EmployeeID, LastName, FirstName, ROW_NUMBER(order by employyID desc) as number 
    FROM funkcja(DEFAULT, DEFAULT) 
    WHERE number  % 3 = 0
    order by desc

    GO
END;
→ Ссылка