这是我必须执行的
CREATE PROCEDURE sp_SalesByYr 1
。参数:OrderYear
2。按地区
Total
的{{1}}销售额
Year
是数据库。
这是我的看法:它会导致错误代码 -
必须声明标量变量@Result
补救措施是什么? (输出的数据类型应为Money而不是Integer)
AdventureWorks2012
答案 0 :(得分:1)
在END语句后你可能只需要一个“GO”。 CREATE PROC包含GO之前的所有内容,因此包括您的测试语句。
我做了一些更改,但做了一些假设 - 也许会有所帮助。
最终代码成了:
CREATE PROC csp_SalesByYr
@OrderYear DateTime,
@SalesYTD Money OUTPUT,
@Territory Nvarchar(50) = NULL
AS
BEGIN
SET NOCOUNT ON
SET @SalesYTD = (
SELECT SUM(TotalDue)
FROM Sales.SalesOrderHeader SO
INNER JOIN Sales.SalesTerritory T
ON SO.TerritoryID = T.TerritoryID
WHERE YEAR(SO.OrderDate) = @OrderYear
AND (@Territory IS NULL OR T.Name = @Territory)
)
END
GO
DECLARE @Result Money
EXEC csp_SalesByYr 2006, @Result OUTPUT, 'Northeast'
PRINT @Result
答案 1 :(得分:0)
CREATE PROC sp_SalesByYr
@OrderYear INT
如
开始
设置NOCOUNT ON;
SET SELECT a.TerritoryID Territory,
SUM(a.TotalDue)SalesByTy
FROM Sales.SalesOrderHeader a
在哪里DatePart(YY,a.OrderDate)= @OrderYear
GROUP BY a.TerritoryID
END
EXEC sp_SalesByYr'2002'OUTPUT