How to call a function in another Function
sql, sql-function, sql-server, sql-server-2012, t-sql
Solution
Try using the following code:
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
Problem
I need to write a script that creates and calls a function named `fnItemTotal` that calculates the total amount of an item in the `OrderItems` table (discount price multiplied by quantity). To do that, this function should accept one parameter for the item ID, it should use the DiscountPrice function that I created earlier and it should return the value of the total for that item. This is my Function I created and it gets created. But when i try to call it it gives an error. ``` 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 ``` This is what I'm using to call it: ``` Select ItemID,dbo.fnItemTotal(ItemID) AS 'Total Price' from OrderItems ORDER BY ItemID; ``` This is the ERROR it gives me when I call it: Msg 208, Level 16, State 3, Line 2 Invalid object name 'dbo.fnDiscountPrice'.