我需要创建一个存储过程,该存储过程将supplierName,startDate和endDate作为参数,并计算给定间隔内该供应商的总收入。我正在使用Northwind。过程如下所示:以日期为参数在T-SQL中执行存储过程
CREATE PROC usp_GetTotalIncomeByPeriod (
@companyName nvarchar(40),
@startDate date,
@endDate date)
AS
BEGIN
SELECT SUM(od.UnitPrice * od.Quantity * (1 - od.Discount))
FROM Orders o
JOIN [Order Details] od
ON o.OrderId = od.OrderId
JOIN Products p
ON od.ProductID = p.ProductID
JOIN Suppliers s
ON p.SupplierID = s.SupplierID
WHERE s.CompanyName = @companyName
AND (o.OrderDate BETWEEN @startDate AND @endDate);
END
GO
的问题是,我不能使用以下invokation实际执行它:
EXEC dbo.usp_GetTotalIncomeByPeriod @companyName = 'Exotic Liquids',
@startDate = DATEFROMPARTS(1900, 01, 01),
@endDate = DATEFROMPARTS(2000, 1, 1);
的DATEFROMPARTS功能似乎对自己工作得很好,但我不能设法使其成为参数。它不断给我'1900附近的错误语法'。我错过了什么?
您不能在存储过程参数列表中使用函数调用。只需使用诸如“1900-01-01”之类的字符串文字即可。 – 2014-12-06 20:06:53