我需要编写一个脚本来创建和调用名为fnItemTotal
的函数,该函数计算OrderItems
表中项目的总金额(折扣价格乘以数量)。
为此,此函数应该接受项ID的一个参数,它应该使用我之前创建的DiscountPrice函数,它应该返回该项的总计值。
这是我创建的函数,它被创建。但是当我尝试调用它时会出错。
CREATE FUNCTION fnItemTotal
(@ItemID INT )
RETURNS MONEY
BEGIN
RETURN
(
SELECT
ItemId,
(SELECT * FROM dbo.fnDiscountPrice(ItemID) WHERE ItemID=@ItemID)*Quantity)--The fnDiscountPrice is the Other function i created.
FROM
OrderItems
WHERE
ItemID=@ItemID
);
END
GO
这就是我用它来称呼它:
Select ItemID,dbo.fnItemTotal(ItemID) AS 'Total Price'
from OrderItems
ORDER BY ItemID;
这是我给它打电话时给出的错误:
Msg 208,Level 16,State 3,Line 2 无效的对象名称' dbo.fnDiscountPrice'。
答案 0 :(得分:1)
尝试使用以下代码:
CREATE FUNCTION dbo.fnItemTotal
(@ItemID INT )
RETURNS MONEY
BEGIN
DECLARE @X as MONEY
SELECT @X = dbo.fnDiscountPrice(ItemID) * OrderItems.Quantity
FROM
OrderItems
WHERE
OrderItems.ItemID=@ItemID
RETURN @X
END