CREATE FUNCTION GetEmployeesHiredInDateRange (@StartDate DATE, @EndDate DATE)
RETURNS TABLE
AS
RETURN
(
SELECT
e.EmployeeID,
e.FirstName,
e.LastName,
e.Email,
e.HireDate,
e.DepartmentID
FROM
Employees e
WHERE
e.HireDate BETWEEN @StartDate AND @EndDate
);
-----------------------------------------------
CREATE PROCEDURE ProcessEmployeeData
@StartDate DATE,
@EndDate DATE,
@DepartmentID INT
AS
BEGIN
-- Step 1: Get employees hired in the date range using the table-valued function
DECLARE @TempEmployees TABLE (
EmployeeID INT,
FirstName NVARCHAR(50),
LastName NVARCHAR(50),
Email NVARCHAR(100),
HireDate DATE,
DepartmentID INT
);
INSERT INTO @TempEmployees
SELECT * FROM GetEmployeesHiredInDateRange(@StartDate, @EndDate);
-- Step 2: Create a temporary table to store processed data
CREATE TABLE #ProcessedEmployees (
EmployeeID INT,
FullName NVARCHAR(101),
Email NVARCHAR(100),
HireDate DATE,
DepartmentName NVARCHAR(100)
);
-- Step 3: Insert data into the temporary table with additional processing
INSERT INTO #ProcessedEmployees (EmployeeID, FullName, Email, HireDate, DepartmentName)
SELECT
e.EmployeeID,
e.FirstName + ' ' + e.LastName AS FullName,
e.Email,
e.HireDate,
d.DepartmentName
FROM
@TempEmployees e
INNER JOIN
Departments d ON e.DepartmentID = d.DepartmentID
WHERE
e.DepartmentID = @DepartmentID;
-- Step 4: Select data from the temporary table to return the result
SELECT * FROM #ProcessedEmployees;
-- Step 5: Clean up the temporary table
DROP TABLE #ProcessedEmployees;
END;
FUNCTION GetEmployeesHiredInDateRange (@StartDate DATE, @EndDate DATE)
RETURNS TABLE
AS
RETURN
(
SELECT
e.EmployeeID,
e.FirstName,
e.LastName,
e.Email,
e.HireDate,
e.DepartmentID
FROM
Employees e
WHERE
e.HireDate BETWEEN @StartDate AND @EndDate
);
-----------------------------------------------
CREATE PROCEDURE ProcessEmployeeData
@StartDate DATE,
@EndDate DATE,
@DepartmentID INT
AS
BEGIN
-- Step 1: Get employees hired in the date range using the table-valued function
DECLARE @TempEmployees TABLE (
EmployeeID INT,
FirstName NVARCHAR(50),
LastName NVARCHAR(50),
Email NVARCHAR(100),
HireDate DATE,
DepartmentID INT
);
INSERT INTO @TempEmployees
SELECT * FROM GetEmployeesHiredInDateRange(@StartDate, @EndDate);
-- Step 2: Create a temporary table to store processed data
CREATE TABLE #ProcessedEmployees (
EmployeeID INT,
FullName NVARCHAR(101),
Email NVARCHAR(100),
HireDate DATE,
DepartmentName NVARCHAR(100)
);
-- Step 3: Insert data into the temporary table with additional processing
INSERT INTO #ProcessedEmployees (EmployeeID, FullName, Email, HireDate, DepartmentName)
SELECT
e.EmployeeID,
e.FirstName + ' ' + e.LastName AS FullName,
e.Email,
e.HireDate,
d.DepartmentName
FROM
@TempEmployees e
INNER JOIN
Departments d ON e.DepartmentID = d.DepartmentID
WHERE
e.DepartmentID = @DepartmentID;
-- Step 4: Select data from the temporary table to return the result
SELECT * FROM #ProcessedEmployees;
-- Step 5: Clean up the temporary table
DROP TABLE #ProcessedEmployees;
END;