如何在另一个函数中调用一个函数

How to call a function in another Function

我需要编写一个脚本来创建和调用一个名为 fnItemTotal 的函数,该函数计算 OrderItems table 中某项商品的总金额(折扣价乘以数量) .

为此,此函数应接受一个项目 ID 参数,它应使用我之前创建的 DiscountPrice 函数,并且它应 return 该项目的总价值。


这是我创建的函数,它已被创建。但是当我尝试调用它时它给出了一个错误。

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 Invalid object name 'dbo.fnDiscountPrice'.

尝试使用以下代码:

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