创建一个名为“CalculateIncomeSums”的存储过程,并传递三个参数:类型、名称和条件(可选)。其中类型参数接受值“Employee”或“Manager”,名称参数接受人员的姓名,条件参数是可选的,可以接受一个额外的WHERE子句用于更进一步筛选收入数据。
以下是实现此功能的完整代码:
CREATE PROCEDURE CalculateIncomeSums
@Type NVARCHAR(50),
@Name NVARCHAR(50),
@Condition NVARCHAR(MAX) = NULL
AS
BEGIN
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = N'SELECT SUM(Income) AS TotalIncome FROM '
IF @Type = 'Employee'
SET @SQL = @SQL + N'EmployeeIncome WHERE EmployeeName = @Name '
ELSE IF @Type = 'Manager'
SET @SQL = @SQL + N'ManagerIncome WHERE ManagerName = @Name '
IF NOT @Condition IS NULL
SET @SQL = @SQL + @Condition
EXEC sp_executesql @SQL, N'@Name NVARCHAR(50)', @Name
END
该存储过程将根据传入的类型参数和名称参数,动态生成相应的SELECT语句,并可选地使用传入的条件参数进行更多筛选。最后,使用sp_executesql函数执行生成的动态SQL语句。