У меня есть следующее CREATE FUNCTION
:
CREATE FUNCTION ufnTotalSales (@StartDate datetime, @EndDate datetime = GETDATE(), @FoodName nvarchar(50) = '')
RETURNS TABLE
AS
RETURN
(
IF @FoodName = '';
BEGIN
SELECT f.FoodID, FoodName, (FoodPrice * Quantity) AS TotalSales FROM Food f, OrderFoodRel ofr
WHERE (Date_Time BETWEEN @StartDate AND @EndDate)
END
ELSE
BEGIN
SELECT f.FoodID, FoodName, (FoodPrice * Quantity) AS TotalSales FROM Food f, OrderFoodRel ofr
WHERE (Date_Time BETWEEN @StartDate AND @EndDate) AND @FoodName = FoodName
END
);
Первая ошибка возникает в @EndDate datetime = GETDATE()
, там написано Incorrect syntax near '()'
. Я пытаюсь присвоить параметру @EndDate
значение по умолчанию текущего datetime
, если пользователь решает использовать значение по умолчанию, но каким-то образом я получаю сообщение об ошибке.
Вторая ошибка возникает при всех параметрах, которые я использовал в блоке IF ... ELSE
(@FoodName
, @StartDate
и @EndDate
). Это говорит о том, что я Must declare the scalar variable "@..."
. Это параметр, а не скалярная переменная, как мне это исправить?
Идея этой функции состоит в том, чтобы возвращать общий объем продаж продуктов питания с двумя вариантами: один из них - общий объем продаж продуктов с именем X от даты к другой дате, если вы указали название продукта; и два - это общий объем продаж продуктов питания от даты к другой дате без учета названия продукта.