我正在努力调用一个功能,以便创建一个销售详情列表,包括GST金额列和每个销售的总销售价格(原价加GST)。
这是我创建的功能:
CREATE PROCEDURE dbo.sp_ReturnTaxedPrice
@ProductID int,
@GST float,
@GSTPrice float output
AS
BEGIN
DECLARE @Price float
SET @Price = (SELECT Price FROM Products WHERE ProductID = @ProductID)
SET @GSTPrice = @Price * (1 - @GST)
END
以下是我希望使用该功能在表格末尾添加两列以显示每笔销售的商品及服务税金额和总价格金额(原价加商品及服务税)的视图:
CREATE VIEW vw_SaleDetails
AS
SELECT
Sales.SaleNo,
Sales.SaleDate,
Customer.FirstName,
Customer.LastName,
Category.Category,
Products.ProductDescription,
Type.Type,
Products.Year,
Products.Price
FROM Category JOIN Customer ON Category.CategoryID = Customer.CategoryID
JOIN Sales ON Customer.CustomerID = Sales.CustomerID
JOIN SalesProducts ON Sales.SaleNo = SalesProducts.SaleNo
JOIN Products ON Products.ProductID = SalesProducts.ProductID
JOIN ProductType ON Products.ProductID = ProductType.ProductID
JOIN Type ON Type.TypeID = ProductType.TypeID
答案 0 :(得分:0)
你想要一个功能,而不是一个程序:
CREATE FUNCTION dbo.sp_ReturnTaxedPrice (
@ProductID int,
@GST float
) RETURNS float
AS
BEGIN
DECLARE @Price float;
SET @Price = (SELECT Price FROM Products WHERE ProductID = @ProductID);
SET @GSTPrice = @Price * (1 - @GST);
RETURN(@GSTPrice);
END;
然后,你可以这样做:
select . . .
dbo.sp_ReturnTaxedPrice(@ProductID, @GST)
. . .
现在有些评论:
float
不是货币值的正确数据类型。使用MONEY
或DECIMAL
/ NUMERIC
。