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

Dan*_*ard 3 sql t-sql sql-server sql-function sql-server-2012

我需要编写一个脚本来创建并调用一个名为的函数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
Run Code Online (Sandbox Code Playgroud)

这就是我用来称呼它的方式:

Select ItemID,dbo.fnItemTotal(ItemID) AS 'Total Price'
from OrderItems 
ORDER BY ItemID;
Run Code Online (Sandbox Code Playgroud)

这是我调用它时给我的错误:

消息 208,级别 16,状态 3,第 2 行 对象名称“dbo.fnDiscountPrice”无效。

Had*_*adi 5

尝试使用以下代码:

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 
Run Code Online (Sandbox Code Playgroud)