У меня проблемы с созданием простой функции для базы данных проката автомобилей в SQL Server.
CREATE FUNCTION F_late_price
(@from_date DATETIME,
@to_date DATETIME,
@fee_per_day INT)
RETURNS @Late_Customers_fees TABLE
(Id_Cust INT,
Date_of_Rent_End_Due DATETIME,
Date_of_Rent_End DATETIME,
Total_fee AS (DATEDIFF(DAY, Date_of_Rent_End_Due, Date_of_Rent_End)) * @fee_per_day
)
AS
BEGIN
IF @from_date <= @to_date
BEGIN
INSERT INTO @Late_Customers_fees
SELECT
Id_Cust, Date_of_Rent_End_Due, Date_of_Rent_End
FROM
F_late_customers(@from_date, @to_date)
END
RETURN
END
Функция F_late_customers
передается две даты и возвращает таблицу с клиентами, конечная дата которых истекает:
CREATE FUNCTION F_late_customers
(@from_date DATETIME,
@to_date DATETIME)
RETURNS @Late_Customers_details TABLE
(Id_Cust INT,
F_Name NVARCHAR(16),
L_Name NVARCHAR(16),
Date_of_Rent_Start DATETIME,
Date_of_Rent_End_Due DATETIME,
Date_of_Rent_End DATETIME
)
AS
BEGIN
IF @from_date <= @to_date
BEGIN
INSERT INTO @Late_Customers_details
SELECT
dbo.Customers.Id_Cust,
dbo.Customers.F_Name, dbo.Customers.L_Name,
dbo.Rents.Date_Of_Rent_Start,
dbo.Rents.Date_Of_Rent_End_Due, dbo.Rents.Date_Of_Rent_End
FROM
dbo.Customers
INNER JOIN
dbo.Rents ON dbo.Customers.Id_Cust = dbo.Rents.ID_Cust
WHERE
(dbo.Rents.Date_Of_Rent_End_Due) < (dbo.Rents.Date_Of_Rent_End)
END
RETURN
END
Но функция F_late_price
выдает ошибку об использовании @fee_per_day
в качестве параметра в операторе создания таблицы.
Есть ли способ решить эту проблему?
Буду признателен за любую помощь
Спасибо