【发布时间】:2015-02-04 18:49:14
【问题描述】:
我需要创建一个以供应商名称、开始日期和结束日期为参数的存储过程,并计算该供应商在给定时间间隔内的总收入。我正在使用北风。过程如下:
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
问题是我实际上无法使用以下调用来执行它:
EXEC dbo.usp_GetTotalIncomeByPeriod @companyName = 'Exotic Liquids',
@startDate = DATEFROMPARTS(1900, 01, 01),
@endDate = DATEFROMPARTS(2000, 1, 1);
DATEFROMPARTS 函数本身似乎可以正常工作,但我无法让它作为参数工作。它不断给我“1900 年附近的语法错误”。我错过了什么?
【问题讨论】:
-
您不能在存储过程参数列表中使用函数调用。只需使用字符串文字,例如
'1900-01-01'。
标签: sql-server tsql date stored-procedures