2016-10-22 13 views
0

Ich muss ein Skript schreiben, das eine Funktion namens fnItemTotal erstellt und aufruft, die den Gesamtbetrag eines Artikels in der Tabelle OrderItems berechnet (Rabattpreis multipliziert mit der Menge).So rufen Sie eine Funktion in einer anderen Funktion auf

Um dies zu tun, sollte diese Funktion einen Parameter für die Artikel-ID akzeptieren, es sollte die DiscountPrice-Funktion verwenden, die ich zuvor erstellt habe, und es sollte den Wert der Summe für diesen Artikel zurückgeben.


Dies ist meine Funktion, die ich erstellt habe und es wird erstellt. Aber wenn ich versuche, es anzurufen, gibt es einen Fehler.

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 

Dies ist, was ich verwende es zu nennen:

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

Dies ist der Fehler, den es gibt mir, wenn ich es nennen:

Msg 208, Ebene 16, Status 3, Zeile 2 Ungültiger Objektname 'dbo.fnDiscountPrice'.

+0

Sind Sie absolut sicher, dass Sie die 'fnDiscountPrice' Funktion im' dbo' Schema erstellt? Sind Sie absolut sicher, dass die Funktion in der Datenbank existiert, in der Sie die Funktion ausführen? –

+0

Ja ich hatte immer noch das Skript von wo ich es erstellt habe. @ TT. –

Antwort

0

Versuchen Sie, den folgenden Code:

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

Das hat nicht funktioniert, es sagt, dass die Artikel-ID mehrdeutig ist @ H.Fadlallah –

+0

Ich habe meinen Code bearbeitet. versuchen Sie es jetzt – Hadi

+0

das Hauptproblem war, dass die Funktion Geld zurücksenden durch Syntax und in Wirklichkeit gibt es eine Tabelle zurück – Hadi

Verwandte Themen