2016-10-22 65 views
0

我需要编写一个脚本,该脚本创建并调用名为fnItemTotal的函数,该函数计算OrderItems表中的项目总数(折扣价格乘以数量)。如何在另一个函数中调用函数

要做到这一点,该函数应该接受一个项目ID的参数,它应该使用我之前创建的DiscountPrice函数,它应该返回该项目的总价值。


这是我创建的函数,它被创建。但是当我尝试调用它时会出现错误。

CREATE FUNCTION fnItemTotal 
     (@ItemID INT) 
    RETURNS MONEY 
BEGIN 
RETURN 
    (
     SELECT 
      ItemId, 
      (SELECT * FROM dbo.fnDiscountPrice(ItemID) WHERE [email protected])*Quantity)--The fnDiscountPrice is the Other function i created. 
     FROM 
      OrderItems 
     WHERE 
      [email protected] 
    ); 
END 
GO 

这是我用什么来称呼它:

Select ItemID,dbo.fnItemTotal(ItemID) AS 'Total Price' 
from OrderItems 
ORDER BY ItemID; 

这是它给我的错误,当我把它叫做:

消息208,Level 16,State 3,Line 2 无效的对象名称'dbo.fnDiscountPrice'。

+0

你真的确认你在'dbo'模式中创建了'fnDiscountPrice'功能?您是否确定该函数存在于您正在运行该函数的数据库中? –

+0

是的,我仍然从我创建它的地方开始创建剧本。@ TT。 –

回答

0

尝试使用下面的代码:

CREATE FUNCTION dbo.fnItemTotal 
    (@ItemID INT) 
RETURNS MONEY 
BEGIN 
DECLARE @X as MONEY 

     SELECT @X = dbo.fnDiscountPrice(ItemID) * OrderItems.Quantity 
     FROM 
      OrderItems 
     WHERE 
      [email protected] 

      RETURN @X 

END 
+0

这不起作用它说物品ID是不明确的@ H.Fadlallah –

+0

我编辑了我的代码。现在试试 – Hadi

+0

主要问题是该函数通过语法返回金钱,并在实际中返回表格 – Hadi

相关问题