我有这个函数返回在特定课程上工作的工作人员的成本,课程可以有一个或多个实验室辅助和一个或多个工作人员个人,只要有只有一名工作人员和一名助理在特定课程上工作,我想让它适用于任何人员和助理的工作量,我如何扩展此功能以获得该功能?扩展SQL函数的功能
ALTER FUNCTION [dbo].[getCourseCost]
(
@CourseCode varchar(50),
@Year nchar(10),
@Period nchar(10)
)
RETURNS int
AS
BEGIN
DECLARE @SSN_staff varchar(50)
DECLARE @Salary_staff int
DECLARE @Hours_staff int
DECLARE @Cost_staff int
DECLARE @Cost_labass int
SELECT @SSN_staff = SSN FROM Attended_By WHERE Period = @Period AND Year = @Year AND CourseCode = @CourseCode
SELECT @Salary_staff = Salary FROM Staff WHERE SSN = @SSN_staff
SELECT @Hours_staff = Hours FROM Attended_By WHERE Period = @Period AND Year = @Year AND CourseCode = @CourseCode
SELECT @Cost_labass = (Hours * Salary) FROM Labass WHERE Period = @Period AND Year = @Year AND CourseCode = @CourseCode
SET @Cost_staff = @Salary_staff * @Hours_staff
IF @Cost_staff is NULL
BEGIN
SET @Cost_staff = 0
END
IF @Cost_labass is NULL
BEGIN
SET @Cost_labass = 0
END
RETURN @Cost_staff + @Cost_labass
END
虽然我大概可以从上面的代码猜估,用为了使问题是回答更容易,您可以定义“Attended_By”,“Staff”和“Labass”表的用途以及这些列的含义。 –