Ich bekomme diesen Fehler und nicht sicher, was zu tun ist. Wie kann ich das aktuelle Gehalt basierend auf dem Parameter @empId zurückgeben? Zum Beispiel sollte es, wenn ich die Funktion wie dbo.getBonus (3) rufen zurück: 5600,000Erstellen einer UDF mit Rückgabewert basierend auf Parameter
Hier ist die Tabelle, die erstellt wird, wenn ich die Abfrage ausführen:
EmpId Bonus
3 5600.000
4 18500.000
5 15600.000
6 7600.000
Fehlermeldung:
Msg 444, Ebene 16, Status 2, Prozedur getBonus, Zeile 188 Select-Anweisungen, die in einer Funktion enthalten sind, können keine Daten an einen Client zurückgeben.
Danke.
CREATE FUNCTION dbo.getBonus(@empId INT)
RETURNS numeric(10,2)
AS
BEGIN
SELECT C.[Emp Id],
(Salary.Emp_Salary * .1) AS 'Bonus'
FROM
(
SELECT
e.Emp_Id AS "Emp Id",
MAX(Emp_Salary_Change_Year) AS "Change Year"
FROM Employee_Details AS e
INNER JOIN Country AS co ON e.Emp_Country_Id = co.Country_Id
INNER JOIN State AS s ON e.Emp_State_Id = s.State_Id
INNER JOIN Designation AS d ON e.Desig_Id = d.Desig_Id
INNER JOIN Salary AS sa ON e.Emp_Id = sa.Emp_Id
GROUP BY e.Emp_Id) AS C
INNER JOIN Salary ON C.[Change Year] =
Salary.Emp_Salary_Change_Year;
RETURN 2
END
danke, aber egal, was id-Parameter i in setzen, es gibt immer 7600.00. –
Fügen Sie einfach eine WHERE-Klausel in die Funktion für die Rückgabe der Ausgabe gemäß dem Eingabeparameter - @empId :) – Nayak
Dank Nayak, die gearbeitet hat. Lösung bestätigt. –