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

时间:2016-10-22 23:48:27

标签: sql sql-server tsql sql-server-2012 sql-function

我需要编写一个脚本来创建和调用名为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'。

1 个答案:

答案 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